Я изучал параллельное программирование на языках программирования Erlang и Go. Согласно моему выводу, они используют модель актера и CSP соответственно.
Но все же меня смущает, каковы объективные различия между CSP и актерами? это только теоретически другое, но одно и то же понятие?
programming-languages
concurrency
concepts
go
erlang
nish1013
источник
источник
Ответы:
На практике разница очень мала: оба представляют отдельные единицы исполнения, чей основной интерфейс с внешним миром - через сообщения.
Различия в деталях реализации языков. Вот несколько таких деталей:
receive
получить все, что отправлено процессу, и выполнить сопоставление с шаблоном (в Go вы должны использоватьselect
несколько случаев, поэтому код будет выглядеть очень похожим, только с разными каналами).Этот последний пункт, я думаю, самый важный. В то время как оба используют сообщения в качестве основного средства связи, Эрланг дает гораздо более сильные гарантии того, как и когда может измениться состояние.
источник