Gdy spojrzymy na model aktora i komunikację procesów sekwencyjnych , widzimy, że obaj próbują wykonywać współbieżność w oparciu o przekazywanie wiadomości , ale są odrębni .
(Widzimy implementacje CSP modelu w odchodzeniu-lang „s goroutines (i Clojure za core.async ) i Aktora w modelu Scala Akka Toolkit)
Próbuję uzyskać prostą listę różnic między modelem aktora a CSP. Do tej pory mam:
- przekazywanie wiadomości aktorów jest asynchroniczne, przekazywanie wiadomości CSP jest synchroniczne
- aktorzy są dający się komponować , CSP nie jest (koniecznie)
- aktorzy zawsze mają nieograniczony niedeterminizm , CSP mógł mieć nieograniczony lub nieograniczony niedeterminizm
- aktorzy mają zmienną topologię, podczas gdy CSP ma ustaloną topologię
- aktorzy mają zasadę lokalizacji , CSP nie ma lokalizacji
- aktorzy są projektowani wokół swojego zachowania, CSP niekoniecznie ma to
Czy to jest poprawne? Czy czegoś mi brakuje?
Założenia
- Kiedy mówię „model aktora” - mam na myśli teoretyczne podstawy implementacji w środowisku Akki Scali
concurrency
message-passing
Sokole Oko
źródło
źródło
Odpowiedzi:
Oto, jak myślę, jak działa Erlang. Uważam, że Akka jest bardzo podobna.
Każdy proces ma jedną skrzynkę pocztową. Wiadomości są umieszczane w skrzynce odbiorczej przez nadawcę i pobierane przez odbiorcę za pomocą dopasowania wzorca. Ten proces dopasowywania może zmieniać kolejność wiadomości w tym sensie, że najstarsza wiadomość w skrzynce pocztowej może nie pasować, ale młodsza. W tym przypadku młodszy jest konsumowany jako pierwszy. Poza tym kolejność wiadomości jest zachowana.
źródło