Коммуникация последовательных процессов [CSP] является альтернативой модели актера в Scala?

В документе 1978 от Hoare у нас появилась идея "Общение последовательных процессов" . Это используется Go, Occam и в Clojure в core.async.

Можно ли использовать CSP в качестве альтернативы модели Actor в Scala? (я вижу JCSP но мне интересно, если это единственный вариант, если он зрелый, и если кто-нибудь его использует).

EDIT. Я также вижу связь Scala объектов в качестве альтернативы JCSP в Scala. Но те из них, похоже, привязаны к реальным потокам, что, по-видимому, не соответствует одному из преимуществ CSP, заключающемуся в том, чтобы уйти от ресурсов ресурса памяти, чтобы поддерживать большое количество потоков всегда активными.

Ответ 1

Вам следует проконсультироваться этот документ, но в целом есть несколько отличий:

  • Каналы анонимны, в то время как у субъектов есть идентификаторы
  • В CSP вы используете каналы для передачи сообщений, но актеры могут напрямую связываться друг с другом.
  • В CSP связь выполняется в виде рандеву (т.е. синхронно). Актеры поддерживают асинхронную передачу сообщений.

И да, можно использовать CSP в качестве альтернативы модели Actor, если эти различия приемлемы в вашей позиции. У меня нет опыта работы с JCSP, но я бы не рекомендовал использовать эту конкретную библиотеку (причина в том, что я вижу, что с 2011 года в проекте нет никакой активности).