stm-chans-3.0.0.4: Additional types of channels for STM.

CopyrightCopyright (c) 2011--2015 wren gayle romano
LicenseBSD
Maintainerwren@community.haskell.org
Stabilityprovisional
Portabilitynon-portable (GHC STM, DeriveDataTypeable)
Safe HaskellTrustworthy
LanguageHaskell98

Control.Concurrent.STM.TMQueue

Contents

Description

A version of Control.Concurrent.STM.TQueue where the queue is closeable. This is similar to a TQueue (Maybe a) with a monotonicity guarantee that once there's a Nothing there will always be Nothing.

Since: 2.0.0

Synopsis

The TMQueue type

data TMQueue a Source

TMQueue is an abstract type representing a closeable FIFO queue.

Instances

Typeable (* -> *) TMQueue 

Creating TMQueues

newTMQueue :: STM (TMQueue a) Source

Build and returns a new instance of TMQueue.

newTMQueueIO :: IO (TMQueue a) Source

IO version of newTMQueue. This is useful for creating top-level TMQueues using unsafePerformIO, because using atomically inside unsafePerformIO isn't possible.

Reading from TMQueues

readTMQueue :: TMQueue a -> STM (Maybe a) Source

Read the next value from the TMQueue, retrying if the queue is empty (and not closed). We return Nothing immediately if the queue is closed and empty.

tryReadTMQueue :: TMQueue a -> STM (Maybe (Maybe a)) Source

A version of readTMQueue which does not retry. Instead it returns Just Nothing if the queue is open but no value is available; it still returns Nothing if the queue is closed and empty.

peekTMQueue :: TMQueue a -> STM (Maybe a) Source

Get the next value from the TMQueue without removing it, retrying if the queue is empty.

tryPeekTMQueue :: TMQueue a -> STM (Maybe (Maybe a)) Source

A version of peekTMQueue which does not retry. Instead it returns Just Nothing if the queue is open but no value is available; it still returns Nothing if the queue is closed and empty.

Writing to TMQueues

writeTMQueue :: TMQueue a -> a -> STM () Source

Write a value to a TMQueue. If the queue is closed then the value is silently discarded. Use isClosedTMQueue to determine if the queue is closed before writing, as needed.

unGetTMQueue :: TMQueue a -> a -> STM () Source

Put a data item back onto a queue, where it will be the next item read. If the queue is closed then the value is silently discarded; you can use peekTMQueue to circumvent this in certain circumstances.

Closing TMQueues

closeTMQueue :: TMQueue a -> STM () Source

Closes the TMQueue, preventing any further writes.

Predicates

isClosedTMQueue :: TMQueue a -> STM Bool Source

Returns True if the supplied TMQueue has been closed.

isEmptyTMQueue :: TMQueue a -> STM Bool Source

Returns True if the supplied TMQueue is empty.