Copyright | (c) 2016 Michael Walker |
---|---|
License | MIT |
Maintainer | Michael Walker <mike@barrucadu.co.uk> |
Stability | stable |
Portability | portable |
Safe Haskell | Safe |
Language | Haskell2010 |
A TQueue
is like a TChan
, with two important differences:
- it has faster throughput than both
TChan
andChan
(although the costs are amortised, so the cost of individual operations can vary a lot). - it does not provide equivalents of the
dupTChan
andcloneTChan
operations.
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
TQueue
is an abstract type representing an unbounded FIFO channel.
Since: 1.0.0.0
newTQueue :: MonadSTM stm => stm (TQueue stm a) Source #
Build and returns a new instance of TQueue
Since: 1.0.0.0
readTQueue :: MonadSTM stm => TQueue stm a -> stm a Source #
Read the next value from the TQueue
.
Since: 1.0.0.0
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.
Since: 1.0.0.0
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.
Since: 1.0.0.0
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.
Since: 1.0.0.0
writeTQueue :: MonadSTM stm => TQueue stm a -> a -> stm () Source #
Write a value to a TQueue
.
Since: 1.0.0.0
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.
Since: 1.0.0.0