queue-0.1.2: Abstraction typeclasses for queue-like things.

Data.Queue.Instances

Synopsis

Documentation

data Chan a

Chan is an abstract type representing an unbounded FIFO channel.

Instances

data MVar a

An MVar (pronounced "em-var") is a synchronising variable, used for communication between concurrent threads. It can be thought of as a a box, which may be empty or full.

Instances

Eq (MVar a) 
NewFifo (MVar a) IO 
Dequeue (MVar a) IO a 
Enqueue (MVar a) IO a 

data STM a

A monad supporting atomic memory transactions.

data TChan a

TChan is an abstract type representing an unbounded FIFO channel.

data TMVar a

A TMVar is a synchronising variable, used for communication between concurrent threads. It can be thought of as a box, which may be empty or full.

Instances

atomically :: STM a -> IO a

Perform a series of STM actions atomically.

You cannot use atomically inside an unsafePerformIO or unsafeInterleaveIO. Any attempt to do so will result in a runtime error. (Reason: allowing this would effectively allow a transaction inside a transaction, depending on exactly when the thunk is evaluated.)

However, see newTVarIO, which can be called inside unsafePerformIO, and which allows top-level TVars to be allocated.