stm-conduit-2.1.2: Introduces conduits to channels, and promotes using conduits concurrently.

Safe HaskellNone



  • Introduction

Contains a combinator for concurrently joining a producer and a consumer, such that the producer may continue to produce (up to the queue size) as the consumer is concurrently consuming.



buffer :: (MonadBaseControl IO m, MonadIO m) => Int -> Producer m a -> Consumer a m b -> m bSource

Concurrently join the producer and consumer, using a bounded queue of the given size. The producer will block when the queue is full, if it is producing faster than the consumers is taking from it. Likewise, if the consumer races ahead, it will block until more input is available.

Exceptions are properly managed and propagated between the two sides, so the net effect should be equivalent to not using buffer at all, save for the concurrent interleaving of effects.

($$&) :: (MonadIO m, MonadBaseControl IO m) => Producer m a -> Consumer a m b -> m bSource

An operator form of buffer. In general you should be able to replace any use of $$ with $$& and suddenly reap the benefit of concurrency, if your conduits were spending time waiting on each other.