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
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.
You should check out core.async. It is a library written by Rich Hickey that implements go style channels.
Answered By – sbochins
Answer Checked By – Pedro (GoLangFix Volunteer)