[Haskell-cafe] A Sliding TChan?

Mark Fine mark.fine at gmail.com
Thu Jan 28 20:30:56 UTC 2016


We're currently using a TMChan to broadcast from a single producer thread
to many consumer threads. This works well! However, we're seeing issues
with a fast producer and/or a slow consumer, with the channel growing
unbounded. Fortunately, our producer-consumer communication is
time-sensitive and tolerant of loss: we're ok with the producer always
writing at the expense of dropping communication to a slow consumer.

A TMBChan provides a bounded channel (but no means to dupe/broadcast) where
a writer will block once the channel fills up. In our use case, we'd like
to continue writing to the channel but dropping off the end of the channel.
Clojure's core-async module has some related concepts, in particular the
notion of a sliding buffer
<https://clojure.github.io/core.async/#clojure.core.async/sliding-buffer>
that drops the oldest elements once full. Has anyone encountered something
similar in working with channels and/or have any solutions? Thanks!

Mark
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20160128/63004763/attachment.html>


More information about the Haskell-Cafe mailing list