Copyright | (c) The University of Glasgow 2001 |
---|---|
License | BSD-style (see the file libraries/base/LICENSE) |
Maintainer | [email protected] |
Stability | experimental |
Portability | non-portable (concurrency) |
Safe Haskell | Trustworthy |
Language | Haskell2010 |
Unbounded channels.
The channels are implemented with MVar
s and therefore inherit all the caveats that apply to MVar
s (possibility of races, deadlocks etc). The stm (software transactional memory) library has a more robust implementation of channels called TChan
s.
Chan
is an abstract type representing an unbounded FIFO channel.
Build and returns a new instance of Chan
.
writeChan :: Chan a -> a -> IO () Source
Write a value to a Chan
.
readChan :: Chan a -> IO a Source
Read the next value from the Chan
.
dupChan :: Chan a -> IO (Chan a) Source
Duplicate a Chan
: the duplicate channel begins empty, but data written to either channel from then on will be available from both. Hence this creates a kind of broadcast channel, where data written by anyone is seen by everyone else.
(Note that a duplicated channel is not equal to its original. So: fmap (c /=) $ dupChan c
returns True
for all c
.)
unGetChan :: Chan a -> a -> IO () Source
Deprecated: if you need this operation, use Control.Concurrent.STM.TChan instead. See http://ghc.haskell.org/trac/ghc/ticket/4154 for details
Put a data item back onto a channel, where it will be the next item read.
isEmptyChan :: Chan a -> IO Bool Source
Deprecated: if you need this operation, use Control.Concurrent.STM.TChan instead. See http://ghc.haskell.org/trac/ghc/ticket/4154 for details
Returns True
if the supplied Chan
is empty.
getChanContents :: Chan a -> IO [a] Source
Return a lazy list representing the contents of the supplied Chan
, much like hGetContents
.
writeList2Chan :: Chan a -> [a] -> IO () Source
Write an entire list of items to a Chan
.
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/8.0.1/docs/html/libraries/base-4.9.0.0/Control-Concurrent-Chan.html