Tak więc ostatnio czytałem dużo artykułu o tym, jak programowanie współbieżne jest trudne i jak współbieżne programowanie ze wspólnym stanem jest prawie niemożliwe. Tak więc języki takie jak Erlang (myślę, że to jest włączone, jeśli nie pytanie nadal ma sens) używają modelu Aktora do współbieżności i nie mają współdzielonego stanu między wątkami. Teraz w moim czasie programowania systemów współbieżnych nie znalazłem współbieżności, aby być tak trudnym - ale ogólnie mogę dopasować prawie każdy problem do paradygmatu producenta/konsumenta i żyć bez dużego (jeśli w ogóle) współdzielonego stanu. Chociaż to prawda? Czy kolejki komunikatów między wątkami faktycznie dzielą się stanem? Czy model producenta/konsumenta programowania współbieżnego jest naprawdę konkretnym przykładem modelu Aktora (to moje prawdziwe pytanie). Myśli?Czy producent/model konsumenta jest równy aktorowi?
Odpowiedz
Pod względem technicznym udostępniane wiadomości reprezentują stan nadrzędnej aplikacji, ale tylko wtedy, gdy producenci i konsumenci sami są bezpaństwowi (w przeciwnym razie po prostu reprezentują stan (y) nośnika wiadomości/a). Model producenta/konsumenta nie jest tak bardzo przykładem modelu aktora, jak każdy indywidualny producent i konsument. Producenci (którzy mogą być również konsumentami, z tych samych udostępnionych kolejek wiadomości lub ze źródeł zewnętrznych) robią to, co robią i wypluwają wiadomość, która zostanie umieszczona w kolejce. Sama kolejka może być uznana za aktora, chociaż pasywną, w tym, że otrzymuje/przechowuje wiadomości i może je dystrybuować (lub po prostu czekać na ich wykonanie). Konsumenci są aktorami tego, że biorą/otrzymują wiadomości od wspólnej kolejki i pracują w oparciu o te wiadomości.
Moja odpowiedź brzmi: model producenta/konsumenta nie jest przykładem modelu aktora, ale raczej przykładem zbioru aktorów pracujących we wspólnym środowisku.
- 1. Czy Kafka ma konsumenta wsadowego?
- 2. Gdzie jest konfiguracja konsumenta huey?
- 3. Czy CSS nie jest równy selektorowi?
- 4. Czy php deg2rad() jest równy mysql radians()
- 5. Czy greenthread jest równy "prawdziwemu" wątkowi
- 6. Czy ten naiwny jest równy, hashcode OK?
- 7. Plik Java jest równy
- 8. Java: Integer jest równy vs. ==
- 9. RabbitMQ jak dławić konsumenta
- 10. Jak sprawdzić, czy identyfikator GUID jest równy zero?
- 11. Sprawdź, czy enum ma pole, które jest równy ciąg
- 12. jeśli NSString nie jest równy funkcji?
- 13. make Eclipse jest równy()/hashCode() użyj getters
- 14. Tworzenie funkcji Java i konsumenta
- 15. dlaczego nie jest zerowy równy null fałszywy
- 16. Serwery proxy hibernacji i `Obiekt # jest równy`
- 17. Obiekty JAXB - hashcode i jest równy
- 18. atrybut chef only_if jest równy true
- 19. Zakres railsów, gdzie nie jest równy
- 20. Laravel 5.4 + Ajax jest równy 401 Nieuwierzytelniony
- 21. Python ten sam znak nie jest równy
- 22. Konkurencja Konsumenta w Redis Pub/Sub jest obsługiwana?
- 23. Jaki jest najładniejszy idiom dla producenta/konsumenta w Go?
- 24. C++ Obiekt ifstream jest równy nullptr, ale nie jest wskaźnikiem?
- 25. 'Większy lub równy' i 'mniejszy lub równy' CODEIGNITER
- 26. Jak działa rebalancing konsumenta w Kafce?
- 27. Co jest lepszym sposobem na sprawdzenie, czy ciąg nie jest równy garstce rzeczy?
- 28. Model producenta-konsumenta - semafor binarny lub mutex?
- 29. wykonania Java Konsumenta Producer rzuca java.lang.IllegalMonitorStateException
- 30. W języku Python, obiekt() jest równy cokolwiek poza sobą?
Czy w paragrafie Aktora jest coś nieodłącznego, które mówi, że nie można mieć wielu aktorów? – Gandalf
W moim przekonaniu paradygmat "Aktor" jest bardziej reprezentatywny dla podmiotu, podczas gdy paradygmat producenta/konsumenta jest bardziej reprezentatywny dla systemu. – yoozer8
Chociaż, przypuszczam, że można rozważyć system producenta/konsumenta, jeśli istnieje on w większym środowisku z innymi podmiotami i może wchodzić w interakcję z innymi podmiotami w większym systemie. – yoozer8