Timers, timeouts, alarms, monadic wrappers.
This library provides several timer and timeout related tools:
Control.Timeout
- Execution of a computation with a time limit, aborting it if the limit is reached before the computation finishes. It is more-or-less a lifted version ofSystem.Timeout
from thebase
package. It's good for single use, but it launches a temporary helper thread. If you want to time-limit actions continuously (e.g. if you're implementing a network protocol), you should probably use one of the other tools described below, since they use a single dedicated thread for all the timeouts.Control.Timer
- Managing a timer running in a dedicated thread. The timer waits for an amount of time you specify, and then runs an action you specify. You can stop and restart it at any time.Control.Alarm
- Managing an alarm, which is a timer whose action is to notify your thread when the specified amount of time passes.Control.Monad.Trans.Timer
- A monad transformer for managing a timerControl.Monad.Trans.Alarm
- A monad transformer for managing an alarmControl.Monad.Trans.Timeout
- A monad transformer for running actions with timeouts, useful for e.g. network protocols where any send and receive can timeoutControl.Monad.Timeout.Class
- A monad typeclass for running actions with a time limit.Control.Timeout
provides a simple trivial for IO (which can then be used with anyMonadIO
), andControl.Monad.Trans.Timeout
provides a scalable instance.
See the .cabal file for more info and link to project website the version control.
The official download location is Hackage:
http://hackage.haskell.org/package/time-out
This library is free software, and is committed to software freedom. It is released to the public domain using the CC0 Public Domain Dedication. For the boring "legal" details see the file 'COPYING'.
See the file 'INSTALL' for hints on installation. The file 'ChangeLog' explains how to see the history log of the changes done in the code. 'NEWS' provides a friendly overview of the changes for each release.