Jakie mechanizmy współbieżności udostępnia Raku i jak można je ocenić? [Zamknięte]
Jestem studentem pracującym obecnie nad moją dysertacją o Raku, dla której zdecydowałem się ocenić, czy Raku (Perl 6) jest dobrym językiem do czynienia z wysoką współbieżnością.
Nie udało mi się znaleźć żadnych artykułów na temat współbieżności Raku poza oficjalną stroną internetową. Nie mam też pojęcia, jak ocenić współbieżność Raku (np. Jakiego programu użyć, jakiego języka porównać z Raku itp.).
Jakie mechanizmy współbieżności zapewnia Raku? Gdzie są one udokumentowane? Jak można ocenić ich funkcjonalność i wydajność?
Odpowiedzi
Raku zapewnia wiele różnych mechanizmów współbieżności (a ponadto zapewnia również szereg równoległych podejść do programowania, ale zakładam, że pytanie dotyczy tak naprawdę współbieżności). Większość tego, co jest w Raku, można znaleźć w innych językach; na przykład:
gather
/take
Mechanizm leniwie wytwarzania wartości. Jest to widoczne w różnych językach jako funkcje generatora; w Raku nie ma jednak limitu pojedynczych klatek stosu, więc są one dodatkowo potężne. (Nie dotyczy to żadnego kontekstu obejmującego programowanie asynchroniczne, ale nadal spełnia definicję współbieżności).Promise
Mechanizm przenoszenia pojedynczego wyniku asynchronicznej operacji jest podobnyPromise
s w JavaScript lubTask
w NET (semantyka są nieco bliższe drugiego).- A
Supply
to strumień wartości asynchronicznych. Ma wiele wspólnego z rozszerzeniami reaktywnymi (Rx) , jednak wybrał nazewnictwo i API, które pasują do ogólnego projektu języka Raku (na przykład nazwy metod pasują do ich synchronicznych podwójnych sekwencji). - A
Channel
to kolejka współbieżna, która ma mechanizm przekazywania zakończenia i błędu, co oznacza, że można łatwo przechodzić między paradygmatamiSupply
iChannel
. Kluczowa różnica polega na tym, że aChannel
ma pamięć - możesz umieścić w niej wartości i natychmiast przejść do zrobienia czegoś innego - podczas gdy jeśli wyemitujesz wartość do aSupply
, zapłacisz koszty przetwarzania (dając mechanizm przeciwciśnienia). Za pomocąChannel
s można budować różne architektury , takie jak etapowa architektura sterowana zdarzeniami .
Najbardziej charakterystyczną koncepcją w Raku, która nie istnieje bezpośrednio w innych językach, jest konstrukcja react
/ supply
/ whenever
. Pisanie procesorów wielu asynchronicznych strumieni jest często trudne (zarządzanie subskrypcjami, kontrola współbieżności); Konstrukcja zapewnia strukturalne podejście do niej. Poza tym jest to głównie kwestia integracji języka, która jest nieco silniejsza w Raku, zamiast traktowania tych rzeczy tylko jako bibliotek.
Jak zauważyli inni, formalnych dokumentów nie ma jeszcze zbyt wiele. Jednak te slajdy mogą być interesujące (zastrzeżenie: są moje; przyczyniłem się do projektu współbieżności Raku i wynalazłem react
/ supply
/ whenever
).
- 8 sposobów na współbieżność i równoległość w Perlu 6
- Zrozumienie reaguj, dostarczaj i kiedykolwiek
- Współbieżność w Perl 6 - omówienie sposobu jej implementacji
Artykuły o współbieżności Raku : Jeśli chcesz opisać, jak działa współbieżność, nie ma żadnych artykułów naukowych, o których wiem. Możesz zajrzeć do niektórych publikacji kalendarza adwentowego, na przykład tego o współbieżności na serwerach HTTP . Większość książek o Raku, jak moje własne przepisy Raku (opublikowane przez Apress), zawiera rozdział o Współbieżności, więc to też możesz sprawdzić. Wreszcie, ten artykuł, którego jestem współautorem, wykorzystuje współbieżność Raku do obliczeń ewolucyjnych, z dobrym skutkiem.
Jak ocenić współbieżność Raku: * Raku używa komunikujących się procesów sekwencyjnych i używa kanałów jako obiektów pierwszej klasy. W tym sensie jest podobny do Go . Z drugiej strony jest w stanie automatycznie wątkować przepływy danych przez hiper / wyścig w taki sam sposób, jak Julia robi to za pomocą makr. Więc to mogą być dwa cele do porównania.
Być może lista mailingowa perl6-users byłaby lepszym miejscem do zadawania takich pytań.
CSP wbudowany w raku jest dobrze ugruntowanym modelem współbieżności wymyślonym przez Tony'ego (Anthony'ego) Hoare'a. Możesz również poszukać pracy Billa (Williama) Roscoe, która kontynuowała badania Tony'ego. Zauważ, że będą to ogólne badania CSP. Wątpię, czy jest coś, do czego można by się odwołać, zrobione specjalnie na Raku.