Istnieje co najmniej trzy dobrze znane podejścia do tworzenia równoległych aplikacji:współbieżne techniki programowania, plusy, minusy
Wielowątkowość i synchronizacja pamięci poprzez blokowanie (.NET, Java). Software Transactional Memory (link text) to kolejne podejście do synchronizacji.
Przesyłanie asynchronicznych wiadomości (Erlang).
Chciałbym dowiedzieć się, czy istnieją inne podejścia i omówić różne wady i zalety tych podejść stosowane do dużych aplikacji rozproszonych. Moim głównym celem jest upraszczanie życia programisty.
Na przykład, moim zdaniem, używanie wielu wątków jest łatwe, gdy nie ma między nimi zależności, co jest dość rzadkie. We wszystkich innych przypadkach kod synchronizacji wątku staje się dość kłopotliwy i trudny do debugowania i powodu.
Dodaj jeszcze jeden do swojej listy: pamięć transakcyjna oprogramowanie (http://en.wikipedia.org/wiki/Software_transactional_memory). Dostępna jest również wersja Java: http://multiverse.codehaus.org/ –
Dodano jako podelement do 1). Nie wygląda to na koncepcyjnie nowy sposób pisania współbieżnych aplikacji, a raczej jako alternatywę dla konstrukcji blokujących. –
@Serge: Nie jestem pewien, dlaczego widzę, dlaczego jest on mniej koncepcyjnie inny niż przekazywanie wiadomości. – jalf