@hackage time-out0.2

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 of System.Timeout from the base 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 timer

  • Control.Monad.Trans.Alarm - A monad transformer for managing an alarm

  • Control.Monad.Trans.Timeout - A monad transformer for running actions with timeouts, useful for e.g. network protocols where any send and receive can timeout

  • Control.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 any MonadIO), and Control.Monad.Trans.Timeout provides a scalable instance.