Patrząc na programowanie współbieżne, powszechnie stosuje się dwa terminy, tj. Współbieżny i równoległy. Niektóre języki programowania w szczególności twierdzą, że obsługują programowanie równoległe, takie jak Java . Czy to oznacza, że programowanie równoległe i współbieżne faktycznie się różni?
Próbuję zrozumieć algorytmy Petersona i Dekkera, które są bardzo podobne i wykazują wiele symetrii. Próbowałem sformułować algorytmy w nieformalnym języku w następujący sposób: Peterson's: "I want to enter." flag[0]=true; "You can enter next." turn=1; "If you want to enter and while(flag[1]==true&&turn==1){ it's your turn I'll wait." } Else: Enter CS! …
Po przeczytaniu kilku źródeł wciąż nie rozumiem wątków na poziomie użytkownika i jądra. W szczególności: Wątki mogą istnieć zarówno na poziomie użytkownika, jak i jądra Jaka jest różnica między poziomem użytkownika a poziomem jądra?
Często słyszę wyrażenia takie jak „semantyka prawdziwej współbieżności” i „równoważność prawdziwej współbieżności” bez żadnych odniesień. Co oznaczają te terminy i dlaczego są ważne? Jakie są przykłady prawdziwych odpowiedników współbieżności i jaka jest ich potrzeba? Np. W jakich przypadkach mają one większe zastosowanie niż więcej standardowych równoważników (bisimulacja, równoważność śladowa itp.)?
Według mojej wiedzy istnieją trzy główne algebry procesowe, które zainspirowały szeroki zakres badań nad formalnymi modelami współbieżności. To są: CCS i -calculus oba autorstwa Robina Milneraππ\pi CSP Tony Hoare i ACP: Jan Bergstra i Jan Willem Klop Wydaje się, że wszyscy trzej mają do dzisiaj dość aktywną obserwację i przeprowadzono …
Ostatnio czytałem trochę literatury i znalazłem dość interesujące struktury danych. Badałem różne metody skrócenia czasów aktualizacji do najgorszego przypadku [1-7].O(1)O(1)\mathcal{O}(1) Ostatnio zacząłem szukać struktur danych bez blokowania, aby wspierać efektywny równoczesny dostęp. Czy przy wdrażaniu struktur danych bez blokowania zastosowano jedną z tych najgorszych technik aktualizacji czasu ?O(1)O(1)\mathcal{O}(1) Pytam, ponieważ; …
Mam dziennik bazy danych, w którym niektóre transakcje wygrywają (są zatwierdzane przed awarią), a niektóre tracą (jeszcze nie zatwierdzone). W klasie nauczyliśmy się, że działania przegranych muszą zostać cofnięte. Czy jest jakiś powód, aby robić to wstecz? Czy ktoś może podać prosty przykład dziennika, w którym cofanie w przód dawałoby …
Blokady są zwykle wdrażane za pomocą instrukcji testowania i ustawiania oraz wymiany na poziomie maszyny. Czy istnieją inne implementacje, które ich nie wykorzystują? Czy możemy również powiedzieć, że wszystkie rozwiązania problemu krytycznego na poziomie sprzętowym można podzielić na trzy, a mianowicie: wyłączanie przerwań, testowanie i ustawianie oraz zamiana?
Według Wikipedii , Operacja testowania i ustawiania może rozwiązać problem konsensusu bez czekania dla nie więcej niż dwóch równoległych procesów. Dlaczego nie może rozwiązać problemu dla więcej niż dwóch procesów?
Gdy spojrzymy na model aktora i komunikację procesów sekwencyjnych , widzimy, że obaj próbują wykonywać współbieżność w oparciu o przekazywanie wiadomości , ale są odrębni . (Widzimy implementacje CSP modelu w odchodzeniu-lang „s goroutines (i Clojure za core.async ) i Aktora w modelu Scala Akka Toolkit) Próbuję uzyskać prostą listę …
Czytałem o językach programowania opartych na stosie, takich jak FORTH i Cat , i wydaje się, że biorąc pod uwagę ich naturę, mogą one wykonywać tylko jedną akcję na raz, niezależnie od swojego paradygmatu (FORTH jest konieczny, a Cat funkcjonalny). Język imperatywny zmodyfikowałby stos, a język czysto funkcjonalny, taki jak …
Czytałem o różnicach między serializacją a linearyzacją , które są kryteriami spójności dla replikowanych systemów, takich jak replikowane bazy danych. Nie wiem jednak, w jakich przypadkach konieczna byłaby linearyzowalność, nawet jeśli jest silniejsza niż serializowalność. Czy mógłbyś wymyślić scenariusze, w których tak silna własność byłaby rzeczywiście konieczna?
Czy są jakieś zmiany, które można wprowadzić w procesorach, aby działały lepiej w przypadku równoczesnych środowisk uruchomieniowych, takich jak Rust? Na przykład, czy są jakieś zmiany w implementacjach przewidywania gałęzi lub rozmiarach pamięci podręcznej, które pomogłyby w jednoczesnych uruchomieniach? Mam wrażenie, że obecne konstrukcje procesorów mogą być bardziej zoptymalizowane pod …
Projektuję bazę danych obiektów w pamięci dla bardzo konkretnego przypadku użycia. Jest to pojedynczy program piszący, ale musi obsługiwać wydajne jednoczesne odczyty. Odczyty muszą być izolowane. Nie ma języka zapytań, baza danych obsługuje tylko: pobierz obiekt / -y przez atrybut / zestaw atrybutów (może istnieć obsługa wyrażeń, np. x.count < …
Innymi słowy, jakie zalety mają wątki hybrydowe w porównaniu z wątkami 1: 1 (tylko jądro) i wątkami N: 1 (tylko użytkownik)? To jest kontynuacja Jaka jest różnica między wątkami na poziomie użytkownika i wątkami na poziomie jądra?
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.