try lamina? https://github.com/ztellman/lamina/
On Sat, Jun 16, 2012 at 9:44 AM, Warren Lynn <[email protected]> wrote: > > What I want to do is something I probably have done dozens of times in C++: > two threads, one thread putting items in a queue, another taking it out > (FIFO). How to do it in Clojure? I am at a loss. I thought about a few > options: > > 1. "watches", but it cannot change the queue itself (can only watch). plus, > I am not sure watch function will run in another thread > 2. "agent", but how to notify the consumer thread when there is new item? > How to block the consumer thread when there is no items in the queue? > 3. Ping-pong promises: so the producer delivers a promise to the consumer, > and the consumer immediately deliver another promise to the producer to > acknowledge the receipt so the producer can move on. But that will prevent > the producer to put the next item into the queue before the consumer finish > its processing, so not exactly concurrent. > > I cannot believe I am the first one to encounter this. Can anyone suggest > some idiomatic solution for the above? Thank you. > > > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to [email protected] > Note that posts from new members are moderated - please be patient with your > first post. > To unsubscribe from this group, send email to > [email protected] > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en -- Zhitong He Sun Yat-sen University -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to [email protected] Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/clojure?hl=en
