2011-08-09 17 views
6

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

4

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.

+0

Czy w paragrafie Aktora jest coś nieodłącznego, które mówi, że nie można mieć wielu aktorów? – Gandalf

+0

W moim przekonaniu paradygmat "Aktor" jest bardziej reprezentatywny dla podmiotu, podczas gdy paradygmat producenta/konsumenta jest bardziej reprezentatywny dla systemu. – yoozer8

+0

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

Powiązane problemy