. Недавно мне понравилось смотреть доклад Google IO о шаблонах Go Concurrency
. Хотя подход Go к параллельным (подпрограммам, связи по каналам )явно отличается от неизменяемости Clojure (, управляемых ссылок, STM ), казалось, что подход Go все же может быть полезен в некоторых обстоятельствах в Кложурный контекст.
Так есть ли прямой эквивалент в Clojure или Java для примитивов параллелизма Go (, возможно, библиотека ), в частности:
channel
-как объекты, которые блокируются до тех пор, пока читатель и писатель не будут доступны на обоих концахselect
-похожая конструкция, которая может ожидать результатов по нескольким каналамP.S. Совершенно доволен решением на Java, так как его легко использовать из Clojure
ОБНОВЛЕНИЕ Поскольку вопрос был изначально задан, Clojure теперь имеет core.async , который предоставляет все эти функции и многое другое.