W kontekście poprawności programów współbieżnych, Spójność sekwencyjna jest silniejszym warunkiem niż spójność spoczynkowa zgodnie ze sztuką programowania wieloprocesorowego autorstwa Maurice'a Herlihy'ego i Nira Shavita (rozdział 3). Autorzy wielu publikacji: Autorzy w 3.4.1 należy również wspomnieć, że istnieją sekwencyjnie spójne egzekucje, które nie są konsekwentnie spójne. Nie rozumiem jak. Czy ktoś mógłby rzucić światło lub wykonać próbną egzekucję?Przykład wykonania, który jest sekwencyjnie spójny, ale nie konsekwentnie spójny.
Odpowiedz
Z this dissertation o współbieżności, że odczyt (str.20):
Przykładem sytuacji, które są dozwolone w sekwencyjnej konsystencji modelu, dozwolona w spoczynku modelu konsystencji pokazano na Figurze 2.1 . Dwa procesy współdzielą współbieżną strukturę danych kolejki. Pierwszy proces zapisuje x. W pewnym nie nakładającym się kolejnym przedziale, , drugi proces wpisuje y. Na koniec drugi proces wykonuje deklinację i odbiera y. Ten przykład jest sekwencyjnie spójny, ale nie jest spójny, przy założeniu, że czas między kolejnymi operacjami spadnie poza okres spoczynku.
Figura 2.1:
T1: --- enq(x) --------------------------- T2: ------------- enq(y) ---- deq():y ----
Historia ta jest dozwolone przez kolejne konsystencji może być dozwolone lub zabronione przez spoczynkowego konsystencji i zabrania linearizable konsystencji.
Jeśli przyjmiesz, że pomiędzy tymi dwoma kolejkami, kolejka była spokojna, to T2 powinna zobaczyć zmiany z T1, a kolejka powinna zwrócić x. Jeśli założysz, że pomiędzy tymi dwoma kolejkami nie było żadnych spoczynkowych interwałów, wtedy dwie kolejki mogą być ponownie zamieniane według twoich potrzeb, a deq(): y jest spójne.
- 1. Czy CloudKit jest silnie spójny, czy ostatecznie spójny?
- 2. spójny keyCode dla `#`
- 3. Ustawić spójny styl dla wszystkich EditText (na przykład)
- 4. Dlaczego string.Normalize nie jest spójny w zależności od kontekstu?
- 5. uzyskać spójny wektor nazwy elementu listy
- 6. Dlaczego mysqldump z jedną transakcją jest bardziej spójny niż bez?
- 7. Czy istnieje spójny sposób na link do wyniku "I Feel Lucky" Google?
- 8. Czy istnieją sprawdzone metody/spójny sposób aktualizowania pola bazy danych zawierającego składowanie klucz-wartość mieszania?
- 9. Zdarzenie UIControlEventValueChanged nie jest wyzwalane dla UIPageControl konsekwentnie
- 10. Obiekt nie zdefiniowane podczas pracy w pętli, ale nie wtedy, gdy wykonywane sekwencyjnie
- 11. Kolejność zadań selekcji sekwencyjnie
- 12. W C++ 11, jaki jest sens wątku, który "nie reprezentuje wątku wykonania"?
- 13. Przykład symbolu.WBAN. Bluetooth, który przesyła dane
- 14. Czy istnieje prosty, ale użyteczny przykład jquery.JsPlumb?
- 15. daty konsekwentnie dwa dni wolne
- 16. Dlaczego wieloprocesorowość Pythona działa sekwencyjnie?
- 17. Który Factor GUI samouczek/przykład aplikacji?
- 18. numery Formatowanie konsekwentnie w Pythonie
- 19. Script umiera jeśli moduł, który nie robi istnieć stosowany jest podczas sortowania() - DateTime :: TimeZone :: przykład lokalny
- 20. Opcja wykonania planu konserwacji jest wyszarzona
- 21. Dlaczego komórki kolorów funkcji R działają konsekwentnie?
- 22. Jeden lub więcej projektów nie może być załadowanych, ale VS, ale nie mówi, który
- 23. Jaki jest przykład nieprawidłowej przeceny?
- 24. jest zmienną globalną przykład
- 25. Uruchamianie przypadków testowych sekwencyjnie w kreatorze
- 26. Eliksir idiomatyczny do wykonania, jeśli params nie jest zerowy?
- 27. PHP array_search konsekwentnie zwraca pierwszy klucz tablicy
- 28. Matlab: powtarzaj każdą kolumnę sekwencyjnie n razy
- 29. Dlaczego Internet Explorer nie uruchamia konsekwentnie zdarzenia przesyłania?
- 30. Dlaczego liczba całkowita może być odjęta od DATETIME, ale nie DATA typ
Czy następujące wykonanie może być przykładem "spójności zgodnej, ale niekonsekwentnie spójnej"? T1: - enq (x) --------- enq (y) ------------________________________________________________ T2: ------- deq (y) --- ----------- | ---- deq (x) -_______________________________________________ To wykonanie wyraźnie nie jest sekwencyjnie spójne. Jednakże, jeśli wygodnie przyjmujemy przerwę w temperaturze ** | **, możemy zmienić kolejność dwóch enq() s T1 i będzie ona konsekwentnie spójna. @ewernli, Czy uważasz, że to wyjaśnienie ma sens? – Trojosh
Myślę, że tak, w oparciu o moje zrozumienie spójności spoczynkowej. Ale to też jest dla mnie nowatorska forma, nauczyłem się tego wczoraj :) – ewernli
@ewernli jest powodem, dla którego uważa się sekwencyjną spójność, że enq (y) deq(): y enq (x) jest możliwą sekwencyjną sekwencją wykonawczą? I.E jest nadal ważny w porządku programu. – William