-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Implementation of bounded channels.
--
-- This library introduces BoundedChan. BoundedChans differ from Chans in
-- that they are guaranteed to contain no more than a certain number of
-- elements.
@package BoundedChan
@version 1.0.0.3
-- | Implements bounded channels. These channels differ from normal
-- Chans in that they are guaranteed to contain no more than a
-- certain number of elements. This is ideal when you may be writing to a
-- channel faster than you are able to read from it.
--
-- This module supports all the functions of
-- Control.Concurrent.Chan except unGetChan and
-- dupChan, which are not supported for bounded channels.
module Control.Concurrent.BoundedChan
-- | BoundedChan is an abstract data type representing a bounded
-- channel.
data BoundedChan a
-- | newBoundedChan n returns a channel than can contain no more
-- than n elements.
newBoundedChan :: Int -> IO (BoundedChan a)
-- | Write an element to the channel. If the channel is full, this routine
-- will block until it is able to write. If you have multiple writers, be
-- careful here, because the unlocking is not guaranteed to avoid
-- starvation.
writeChan :: BoundedChan a -> a -> IO ()
-- | Read an element from the channel. If the channel is empty, this
-- routine will block until it is able to read.
readChan :: BoundedChan a -> IO a
-- | Returns True if the supplied channel is empty.
isEmptyChan :: BoundedChan a -> IO Bool
-- | Return a lazy list representing the contents of the supplied channel.
getChanContents :: BoundedChan a -> IO [a]
-- | Write a list of elements to the channel. If the channel becomes full,
-- this routine will block until it is able to write.
writeList2Chan :: BoundedChan a -> [a] -> IO ()