| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Control.Concurrent.Classy.STM.TQueue
Contents
Description
A TQueue is like a TChan, with two important differences:
- it has faster throughput than both
TChanandChan(although the costs are amortised, so the cost of individual operations can vary a lot). - it does not provide equivalents of the
dupTChanandcloneTChanoperations.
The implementation is based on the traditional purely-functional queue representation that uses two lists to obtain amortised O(1) enqueue and dequeue operations.
Deviations: TQueue as defined here does not have an Eq
instance, this is because the MonadSTM TVar type does not have
an Eq constraint. Furthermore, the newTQueueIO function is not
provided.
- data TQueue stm a
- newTQueue :: MonadSTM stm => stm (TQueue stm a)
- readTQueue :: MonadSTM stm => TQueue stm a -> stm a
- tryReadTQueue :: MonadSTM stm => TQueue stm a -> stm (Maybe a)
- peekTQueue :: MonadSTM stm => TQueue stm a -> stm a
- tryPeekTQueue :: MonadSTM stm => TQueue stm a -> stm (Maybe a)
- writeTQueue :: MonadSTM stm => TQueue stm a -> a -> stm ()
- unGetTQueue :: MonadSTM stm => TQueue stm a -> a -> stm ()
- isEmptyTQueue :: MonadSTM stm => TQueue stm a -> stm Bool
TQueue
readTQueue :: MonadSTM stm => TQueue stm a -> stm a Source
Read the next value from the TQueue.
tryReadTQueue :: MonadSTM stm => TQueue stm a -> stm (Maybe a) Source
A version of readTQueue which does not retry. Instead it
returns Nothing if no value is available.
peekTQueue :: MonadSTM stm => TQueue stm a -> stm a Source
Get the next value from the TQueue without removing it,
retrying if the channel is empty.
tryPeekTQueue :: MonadSTM stm => TQueue stm a -> stm (Maybe a) Source
A version of peekTQueue which does not retry. Instead it
returns Nothing if no value is available.
writeTQueue :: MonadSTM stm => TQueue stm a -> a -> stm () Source
Write a value to a TQueue.
unGetTQueue :: MonadSTM stm => TQueue stm a -> a -> stm () Source
Put a data item back onto a channel, where it will be the next item read.