Maintainer | Bas van Dijk <v.dijk.bas@gmail.com> , Roel van Dijk <vandijk.roel@gmail.com> |
---|
An Event is a simple mechanism for communication between threads: one thread signals an event and other threads wait for it.
Each event has an internal State
which is either Set
or Cleared
. This
state can be changed with the corresponding functions set
and clear
. The
wait
function blocks until the state is Set
. An important property of
setting an event is that all threads waiting for it are woken.
It was inspired by the Python Event
object. See:
http://docs.python.org/3.1/library/threading.html#event-objects
This module is designed to be imported qualified. We suggest importing it like:
import Control.Concurrent.Event ( Event ) import qualified Control.Concurrent.Event as Event ( ... )
Documentation
waitTimeout :: Event -> Int -> IO BoolSource
Block until the event is set
or until a timer expires.
Like wait
but with a timeout. A return value of False
indicates a timeout
occurred.
The timeout is specified in microseconds. A timeout of 0 μs will cause
the function to return False
without blocking in case the event state is
Cleared
. Negative timeouts are treated the same as a timeout of 0
μs. The maximum timeout is constrained by the range of the Int
type. The Haskell standard guarantees an upper bound of at least 2^29-1
giving a maximum timeout of at least (2^29-1) / 10^6
= ~536 seconds.