Copyright | (c) The University of Glasgow 2012 |
---|---|
License | BSD-style (see the file libraries/base/LICENSE) |
Maintainer | [email protected] |
Stability | experimental |
Portability | non-portable (requires STM) |
Safe Haskell | Trustworthy |
Language | Haskell2010 |
TBQueue
is a bounded version of TQueue
. The queue has a maximum capacity set when it is created. If the queue already contains the maximum number of elements, then writeTBQueue
blocks until an element is removed from the queue.
The implementation is based on the traditional purely-functional queue representation that uses two lists to obtain amortised O(1) enqueue and dequeue operations.
Since: stm-2.4
TBQueue
is an abstract type representing a bounded FIFO channel.
Since: stm-2.4
Builds and returns a new instance of TBQueue
.
newTBQueueIO :: Natural -> IO (TBQueue a) Source
IO
version of newTBQueue
. This is useful for creating top-level TBQueue
s using unsafePerformIO
, because using atomically
inside unsafePerformIO
isn't possible.
readTBQueue :: TBQueue a -> STM a Source
Read the next value from the TBQueue
.
tryReadTBQueue :: TBQueue a -> STM (Maybe a) Source
A version of readTBQueue
which does not retry. Instead it returns Nothing
if no value is available.
flushTBQueue :: TBQueue a -> STM [a] Source
Efficiently read the entire contents of a TBQueue
into a list. This function never retries.
Since: stm-2.4.5
peekTBQueue :: TBQueue a -> STM a Source
Get the next value from the TBQueue
without removing it, retrying if the channel is empty.
tryPeekTBQueue :: TBQueue a -> STM (Maybe a) Source
A version of peekTBQueue
which does not retry. Instead it returns Nothing
if no value is available.
writeTBQueue :: TBQueue a -> a -> STM () Source
Write a value to a TBQueue
; blocks if the queue is full.
unGetTBQueue :: TBQueue a -> a -> STM () Source
Put a data item back onto a channel, where it will be the next item read. Blocks if the queue is full.
lengthTBQueue :: TBQueue a -> STM Natural Source
Return the length of a TBQueue
.
Since: stm-2.5.0.0
isEmptyTBQueue :: TBQueue a -> STM Bool Source
Returns True
if the supplied TBQueue
is empty.
isFullTBQueue :: TBQueue a -> STM Bool Source
Returns True
if the supplied TBQueue
is full.
Since: stm-2.4.3
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/8.8.3/docs/html/libraries/stm-2.5.0.0/Control-Concurrent-STM-TBQueue.html