Когда мы смотрим на модель актора и передачу последовательных процессов, мы видим, что они оба пытаются выполнять параллелизм на основе передачи сообщений , но они различны .
(Мы видим реализации НСП модели в ходу-лане «s goroutines (и Clojure в core.async ) и актер модель в компании Scala Akka инструментарии)
Я пытаюсь получить простой список различий между Actor Model и CSP. Пока что у меня есть:
- Передача сообщений актерами асинхронна, передача сообщений CSP синхронна
- актеры составные , CSP нет (обязательно)
- актеры всегда имеют неограниченный недетерминизм , CSP может иметь ограниченный или неограниченный недетерминизм
- Актеры имеют переменную топологию, тогда как CSP имеет фиксированную топологию
- актеры имеют принцип локальности , CSP не имеет локальности
- актеры строятся вокруг своего поведения, CSP не обязательно имеет это
Это верно? Я что-то пропустил?
Предположения
- Когда я говорю «модель актера» - я имею в виду теоретическую основу для реализации в среде Akka Scala
concurrency
message-passing
Hawkeye
источник
источник
Ответы:
Вот как я думаю, что Эрланг работает. Я считаю, что Акка очень похожа.
Каждый процесс имеет один почтовый ящик. Сообщения помещаются отправителем в почтовый ящик получателя и извлекаются получателем с использованием сопоставления с образцом. Этот процесс сопоставления может изменить порядок сообщений в том смысле, что самое старое сообщение в почтовом ящике может не совпадать, но младшее совпадает. В этом случае младший потребляется первым. Кроме того, порядок сообщений сохраняется.
источник