concurrent-extra-0.2: Extra concurrency primitives

MaintainerBas van Dijk <v.dijk.bas@gmail.com> , Roel van Dijk <vandijk.roel@gmail.com>

Control.Concurrent.STM.Event

Description

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.STM.Event          ( Event )
 import qualified Control.Concurrent.STM.Event as Event ( ... )

Synopsis

Documentation

data Event Source

An event is in one of two possible states: "Set" or "Cleared".

Instances

new :: STM EventSource

Create an event in the "Cleared" state.

newSet :: STM EventSource

Create an event in the "Set" state.

wait :: Event -> STM ()Source

Retry until the event is set.

If the state of the event is already "Set" this function will return immediately. Otherwise it will retry until another thread calls set.

set :: Event -> STM ()Source

Changes the state of the event to "Set". All threads that where waiting for this event are woken. Threads that wait after the state is changed to "Set" will not retry.

clear :: Event -> STM ()Source

Changes the state of the event to "Cleared". Threads that wait after the state is changed to "Cleared" will retry until the state is changed to "Set".