Bounded STM TChan
A bounded, transactional channel, implemented as a modified STM TChan (http://hackage.haskell.org/package/stm). It is intended to loosely synchronise producers and consumers; exceeding the channel capacity causes the writer to retry.
Channels may cancelled, which may be used to signal consumers to shutdown once there are no more elements to process.
Channels may be duplicated. Data written to a duplicated channel will appear on all other associated channels, hence leading to a form of broadcast.