Эквивалент горутин в Clojure/Java

. Недавно мне понравилось смотреть доклад Google IO о шаблонах Go Concurrency

. Хотя подход Go к параллельным (подпрограммам, связи по каналам )явно отличается от неизменяемости Clojure (, управляемых ссылок, STM ), казалось, что подход Go все же может быть полезен в некоторых обстоятельствах в Кложурный контекст.

Так есть ли прямой эквивалент в Clojure или Java для примитивов параллелизма Go (, возможно, библиотека ), в частности:

  • channel-как объекты, которые блокируются до тех пор, пока читатель и писатель не будут доступны на обоих концах
  • Аselect-похожая конструкция, которая может ожидать результатов по нескольким каналам

P.S. Совершенно доволен решением на Java, так как его легко использовать из Clojure

ОБНОВЛЕНИЕ Поскольку вопрос был изначально задан, Clojure теперь имеет core.async , который предоставляет все эти функции и многое другое.

15
задан mikera 26 September 2014 в 05:33
поделиться