Pojęcie tablicy jest to, że wiele niezależnych procesy działają i aktualizuje tablicę jak oni wypracować jego fragmentów. Klasycznym przykładem jest rozpoznawanie mowy. Dane wejściowe to dźwięk, który ma zostać rozpoznany. Dźwięk może być podzielony na segmenty i wiele wątków zaczyna dopasowywać fragmenty do słów. Ponieważ każdy wątek znajduje pasujące słowa, aktualizuje tablicę z tłumaczeniem do tego momentu. W miarę jak zaczyna się składać zwrot, inny wątek może sprawdzać gramatykę, aby zweryfikować wybory dokonywane przez różne wątki rozpoznawcze. Jeśli słowo ma niską pewność siebie i narusza gramatykę, utwór można ponownie uruchomić, szukając alternatyw. Może to nawet doprowadzić do ponownej partycjonowania danych dźwiękowych w miarę jak zacinają się i pauzy.
Ponieważ zdania stają się zdaniami, można uzyskać jeszcze większe widoki, a różne opcje dla homofonów (para, pare) mogą zostać rozwiązane. Wszystko to odbywa się poprzez otwarcie tablicy na wszystkie procesy, a "blokady" są stosowane tylko podczas wprowadzania różnych wyników.
Używanie bazy danych jako tablicy ma sens, ponieważ transakcje są "za darmo" , ale zależy to od tego, jak agresywnie dane są aktualizowane i ponownie czytane. Jeśli dzieje się to bardzo szybko, wycieczki w obie strony zsumują się i uczynią strukturę pamięci bardziej rozsądną.
Pomysł mediatora ma sens, ponieważ tworzy pojedynczy punkt blokowania ... a algorytmy tablicowe rzadko stykają się z zakleszczeniami stylu A-> B, B-> A, ponieważ proszą o wszystkie elementy danych z przodu. Poza tym rezygnacja z blokady nie jest dużą karą, ponieważ różne podzadania będą ponownie uruchamiane, gdy dane będą się pojawiać. Subskrybenci tablicy będą musieli zostać powiadomieni, gdy dane, które mają, staną się przestarzałe, co można zrobić za pomocą wywołań zwrotnych, które uruchomiłyby ponownie zadanie z najnowszymi danymi.
Odnośnie komentarza dotyczącego przepływu pracy: główna różnica polega na tym, że większość przepływów pracy jest koordynowana przez proces główny, który przyjmuje właśnie wprowadzony stan i podejmuje decyzje o tym, jakie stany staną się dostępne dla danych, do których można się przenieść. Chociaż mogą istnieć niezależne podmioty, rzadko angażują się w "prześcignięcie" się nawzajem poprzez tworzenie lepszych wyników (które następnie będą wykorzystywać inne zadania). Innymi słowy, przepływ pracy jest zwykle bardzo ograniczonym zbiorem stanów, przez które przechodzą dane, podczas gdy tablica jest prawie darmowa - dla wszystkich niezależnych działań. (To powiedziawszy, tablica może leżeć za twoim przepływem pracy: http://sunsite.informatik.rwth-aachen.de/Publications/CEUR-WS/Vol-247/FORUM_15.pdf)
Nie mogę wymyślić żadnych przykładów C# z wzoru, który widziałem, a rodzaj pracy, którą wykonuję, nie ma za wiele do tego zaproszenia (obliczenia są deterministyczne). Podczas niektórych wyszukiwań znajdują się odniesienia w innych językach, ale żaden nie wygląda na świetną jakość.
Jestem także zainteresowany poznaniem, jak to jest lepsze niż "workflow". – Mank