Patrzyłem na równoczesne programowanie w językach programowania Erlang i Go. Zgodnie z moimi ustaleniami są one używane odpowiednio jako model aktora i CSP.
Ale nadal jestem mylony z obiektywnymi różnicami między CSP a aktorami? czy to tylko teoretycznie inne, ale ta sama koncepcja?
programming-languages
concurrency
concepts
go
erlang
nish1013
źródło
źródło
Odpowiedzi:
W praktyce różnica jest niewielka: obie reprezentują odrębne jednostki wykonawcze, których podstawowym interfejsem ze światem zewnętrznym są wiadomości.
Różnice dotyczą szczegółów implementacji języków. Oto kilka takich szczegółów:
receive
wszystko jest wysyłane do procesu i musi być dopasowane do wzorca (w Go użyłbyś znakuselect
z wieloma przypadkami, więc kod wyglądałby bardzo podobnie, tylko z różnymi kanałami).Myślę, że ten ostatni punkt jest najważniejszy. Podczas gdy oba używają wiadomości jako głównego środka komunikacji, Erlang daje znacznie silniejsze gwarancje dotyczące tego, jak i kiedy stan może się zmienić.
źródło