I recently enjoyed watching the Google IO talk on Go Concurrency patterns
Although the Go approach to concurrency (groutines, communication over channels) is clearly different to Clojure (immutability, manged references, STM), it seemed like the Go approach could still be useful in some circumstances in a Clojure context.
So is there a direct equivalent in Clojure or Java for Go's concurrency primitives (perhaps a library), in particular:
-
channel
-like objects that block until a reader and writer are available at both ends - A
select
-like construct that can wait for results on multiple channels
P.S. Perfectly happy with a Java solution since it would be easy to use from Clojure
UPDATE Since the question was originally asked, Clojure now has core.async which provides all this functionality and more.