stm-chans 1.0.0
The stm-chans package offers a collection of channel types, similar to TChan
but with additional features. In particular it offers these types:
TBChan
: Bounded FIFO channels.- When the channel is full, writers will block/retry. This ensures that the writers do not get too far ahead of the readers, which helps to make sure that memory and cpu resources are used responsibly.
TMChan
: Closeable FIFO channels.- This is like TChan (Maybe a) but with a monotonicity guarantee that once Nothing is returned all future reads will be Nothing as well.
TBMChan
: Bounded Closeable FIFO channels.- This combines the capabilities of TBChan and TMChan.
In addition, the stm-chans package offers a (partial) compatibility layer for some API improvements still making their way into the stm package[1]. These new functions include:
tryReadTChan :: TChan a -> STM (Maybe a)
- A version of readTChan which does not retry. Instead it returns Nothing if no value is available.
peekTChan :: TChan a -> STM a
- Get the next value from the TChan without removing it, retrying if the channel is empty.
tryPeekTChan :: TChan a -> STM (Maybe a)
- A version of peekTChan which does not retry. Instead it returns Nothing if no value is available.