Подтвердить что ты не робот

Почему реализация CSP охватывает только каналы?

В книге о Коммуникации последовательных процессов много времени тратится на определение событий, которые не имеют направления и могут включать несколько независимых процессов.

Только в главе 4 представлены введенные каналы, которые направлены и включают в себя 2 процесса.

Однако все реализации CSP, включая occam, Go, LuaCSP и clojure.core.async, реализуют только каналы.

Хотя большинство практических проблем можно решить с помощью (широковещательных) каналов, мне интересно, почему книга тратит на них столько времени, пока никто их не использует.

4b9b3361

Ответ 1

В Occam-pi барьеры являются важным дополнением к каналам. С барьером каждый зарегистрированный процесс ждет барьера, пока все они не сделают это. На этом этапе все они выпущены. Это пример неканальной формы события CSP.

Оккам-пи также имеет расширенное рандеву с использованием каналов. Это совершенно другая схема использования каналов, очень похожая на рандеву в Аде.

Ответ 2

Ну прежде всего книга произошла до реализации. Поэтому ваш вопрос лучше сформулировать так:

Почему никакая реализация CSP не ставит основной фокус на события, хотя книга сильно их подчеркивает.

В принципе, создание событий первоклассным гражданином языка дает ему определенную специфику использования, которая, вероятно, будет слишком узкой для языка программирования общего назначения.

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