ANN: stm-chans 1.3.1
wren ng thornton
wren at freegeek.org
Thu Mar 1 04:45:19 CET 2012
--------------------------------------------
-- stm-chans 1.3.1
--------------------------------------------
The stm-chans package offers a collection of channel types, similar to
Control.Concurrent.STM.TChan but with additional features.
--------------------------------------------
-- Changes (since 1.2.0)
--------------------------------------------
* (Version 1.3.1) The new stm-2.3 has finally been released with all the
new optimized operations on TVars, TMVars, and TChans. I've updated the
CPP macros in the Compat modules so that now they will actually switch
over to the optimized implementations (instead of waiting for stm-9.0 :)
It's highly recommended that all users bump their minimum stm-chans
requirement to version 1.3.1.
* (Version 1.3.0) Added Control.Concurrent.STM.TMVar.Compat for the
stm-2.3 function tryReadTMVar.
--------------------------------------------
-- Long description
--------------------------------------------
In particular stm-chans offers these types:
* Control.Concurrent.STM.TBChan: Bounded FIFO channels.
When the channel is full, writers will block/retry. This ensures
that the writers do not get too far ahead of the readers, which helps to
make sure that memory and cpu resources are used responsibly.
* Control.Concurrent.STM.TMChan: Closeable FIFO channels.
This is like TChan (Maybe a) but with a monotonicity guarantee that
once Nothing is returned all future reads will be Nothing as well.
* Control.Concurrent.STM.TBMChan: Bounded Closeable FIFO channels.
This combines the capabilities of TBChan and TMChan.
In addition, the stm-chans package offers a (partial) compatibility
layer for the recent API improvements to the stm package (see ticket
#5104 [1]). Among others, these new functions include:
* tryReadTChan :: TChan a -> STM (Maybe a)
A version of readTChan which does not retry. Instead it returns
Nothing if no value is available.
* peekTChan :: TChan a -> STM a
Get the next value from the TChan without removing it, retrying if
the channel is empty.
* tryPeekTChan :: TChan a -> STM (Maybe a)
A version of peekTChan which does not retry. Instead it returns
Nothing if no value is available.
[1] http://hackage.haskell.org/trac/ghc/ticket/5104
--------------------------------------------
-- Links
--------------------------------------------
Homepage:
http://code.haskell.org/~wren/
Hackage:
http://hackage.haskell.org/package/stm-chans
Darcs:
http://community.haskell.org/~wren/stm-chans
Haddock (Darcs version):
http://community.haskell.org/~wren/stm-chans/dist/doc/html/stm-chans
--
Live well,
~wren
More information about the Libraries
mailing list