stm-2.5.0.1: Software Transactional Memory
Copyright (c) The University of Glasgow 2012
License BSD-style (see the file libraries/base/LICENSE)
Maintainer libraries@haskell.org
Stability experimental
Portability non-portable (requires STM)
Safe Haskell Trustworthy
Language Haskell2010

Control.Concurrent.STM.TQueue

Contents

Description

A TQueue is like a TChan , with two important differences:

  • it has faster throughput than both TChan and Chan (although the costs are amortised, so the cost of individual operations can vary a lot).
  • it does not provide equivalents of the dupTChan and cloneTChan 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.

Since: 2.4

Synopsis

TQueue

data TQueue a Source #

TQueue is an abstract type representing an unbounded FIFO channel.

Since: 2.4

newTQueue :: STM ( TQueue a) Source #

Build and returns a new instance of TQueue

newTQueueIO :: IO ( TQueue a) Source #

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

readTQueue :: TQueue a -> STM a Source #

Read the next value from the TQueue .

tryReadTQueue :: TQueue a -> STM ( Maybe a) Source #

A version of readTQueue which does not retry. Instead it returns Nothing if no value is available.

flushTQueue :: TQueue a -> STM [a] Source #

Efficiently read the entire contents of a TQueue into a list. This function never retries.

Since: 2.4.5

peekTQueue :: TQueue a -> STM a Source #

Get the next value from the TQueue without removing it, retrying if the channel is empty.

tryPeekTQueue :: TQueue a -> STM ( Maybe a) Source #

A version of peekTQueue which does not retry. Instead it returns Nothing if no value is available.

writeTQueue :: TQueue a -> a -> STM () Source #

Write a value to a TQueue .

unGetTQueue :: TQueue a -> a -> STM () Source #

Put a data item back onto a channel, where it will be the next item read.