| Maintainer | Bas van Dijk <v.dijk.bas@gmail.com> , Roel van Dijk <vandijk.roel@gmail.com> | 
|---|---|
| Safe Haskell | Safe | 
Control.Concurrent.Broadcast
Description
A Broadcast is a mechanism for communication between threads. Multiple
  wait until a broadcaster listeners a value. The listeners
 block until the value is received. When the broadcaster broadcasts a value
 all listeners are woken.
broadcasts
All functions are exception safe. Throwing asynchronous exceptions will not compromise the internal state of a broadcast.
This module is designed to be imported qualified. We suggest importing it like:
import Control.Concurrent.Broadcast ( Broadcast ) import qualified Control.Concurrent.Broadcast as Broadcast ( ... )
- data Broadcast α
 - new :: IO (Broadcast α)
 - newBroadcasting :: α -> IO (Broadcast α)
 - listen :: Broadcast α -> IO α
 - tryListen :: Broadcast α -> IO (Maybe α)
 - listenTimeout :: Broadcast α -> Integer -> IO (Maybe α)
 - broadcast :: Broadcast α -> α -> IO ()
 - signal :: Broadcast α -> α -> IO ()
 - silence :: Broadcast α -> IO ()
 
Documentation
A broadcast is in one of two possible states:
Creating broadcasts
newBroadcasting :: α -> IO (Broadcast α)Source
newBroadcasting x creates a broadcast in the "broadcasting x" state.
Listening to broadcasts
listen :: Broadcast α -> IO αSource
Listen to a broadcast.
-  If the broadcast is "broadcasting 
x",listenwill returnximmediately. -  If the broadcast is "silent", 
listenwill block until another threada value to the broadcast.broadcasts 
listenTimeout :: Broadcast α -> Integer -> IO (Maybe α)Source
Listen to a broadcast if it is available within a given amount of time.
Like listen, but with a timeout. A return value of Nothing indicates a
timeout occurred.
The timeout is specified in microseconds.
If the broadcast is "silent" and a timeout of 0 μs is specified the
function returns Nothing without blocking.
Negative timeouts are treated the same as a timeout of 0 μs.
Broadcasting
broadcast :: Broadcast α -> α -> IO ()Source
Broadcast a value.
broadcast b x changes the state of the broadcast b to "broadcasting x".
If the broadcast was "silent" all threads that are  to the
broadcast will be woken.
listening
signal :: Broadcast α -> α -> IO ()Source
Broadcast a value before becoming "silent".
The state of the broadcast is changed to "silent" after all threads that are
 to the broadcast are woken and resume with the signalled value.
listening
The semantics of signal are equivalent to the following definition:
signal b x =block$broadcastb x >>silenceb