Was sind die Unterschiede zwischen der sequenziellen Konsistenz und Ruhestrom Konsistenz?
Kann jemand mir erklären die Definitionen und Unterschiede der sequenziellen Konsistenz und Ruhestrom Konsistenz? In den meisten stummen form möglich 😐
Habe ich dies gelesen: Beispiel der Ausführung, die sequentiell konsistent, aber nicht quiescently konsistente
Aber ich bin nicht in der Lage zu verstehen, Sequentielle und Ruhestrom Konsistenz selbst 🙁
- Siehe: coldattic.info/shvedsky/pro/blogs/a-foo-walks-into-a-bar/posts/...
- Ruhestrom Konsistenz bedeutet, dass eine Datenstruktur, die als konsistent betrachtet, nachdem eine operation ausgeführt, auf es und vor einem anderen ausgeführt wird (D. H. in die "Recht" - Zeit). Sequentielle Konsistenz bedeutet, dass die Struktur konsistent bleibt, unabhängig davon, in welcher Reihenfolge Operationen durchgeführt werden, die es aus verschiedenen threads.
- Vielen Dank der link hat mir sehr geholfen.
- Danke auch an dich. Verstanden die Konzepte jetzt 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sequentielle Konsistenz erfordert, dass die Operationen erscheinen soll wirksam werden in der Reihenfolge, wie Sie angegeben sind in jedem Programm. Im Grunde ist es erzwingt Programm, um innerhalb der einzelnen Prozesse und erlaubt es, alle Prozesse zu übernehmen, Sie beobachten die gleiche Reihenfolge der Operationen. Sagen wir, wir haben 2 Prozesse einreihen und entfernen von Elementen auf einer Warteschlange
q
:Dies ist nicht das erwartete Verhalten aus einer FIFO-Warteschlange. Wir würden erwarten, dass dequeue-x, da P1 reiht
x
vor P2 reihty
. Allerdings ist dieses Szenario erlaubt ist, in die sequentielle Konsistenz-Modell, weil sequentiellen Konsistenz verlangt nicht, dass die Reihenfolge, gesehen von allen Prozessen korrekt ist (real-time-Bestellung). Es gibt mindestens eine sequentielle Ausführung erklären können, dass diese Ergebnisse und man ist:In dieser Ausführung jeder Prozess führt Operationen im Programm, um die Bedeutung jeder Prozeß führt seine Operationen in der Reihenfolge, wie Sie angegeben sind in jedem Prozess.
Ruhestrom Konsistenz erfordert nicht überlappende Vorgänge zu erscheinen, um wirksam in Ihren Echtzeit-Reihenfolge, aber überlappende Operationen neu angeordnet werden. Also, das gleiche Szenario ist nicht erlaubt, in der Ruhestrom-Konsistenz-Modell, weil wir erwarten, dass
q.enq(x)
zu erscheinen, um wirksam vorq.enq(y)
, undq.deq()
zurückx
statty
. Auch Ruhestrom Konsistenz nicht unbedingt bewahren-Programm um. Wennq.enq(x)
undq.enq(y)
wäre Auger (überlappende) Betrieb, Sie konnte nachbestellt werden undq.deq():y
wäre quiescently konsistent.Grundsätzlich einige Ausführungen sind sequenziell konsistent, aber nicht quiescently konsistent ist, und Umgekehrt.
Zuerst sollten Sie verstehen, was das Programm um, es ist buchstäblich, wie Sie erwarten, dass Ihr Programm läuft in der Reihenfolge des Erscheinens der Anleitung.
Aber ein Programm um ist nur für einen single-thread-Programm, wenn Sie haben, multithreads, und dann das problem kommt, wie der Programm-Reihenfolge kann nicht halten oder gar nicht vorhanden, wie manchmal kann man nicht sagen, welche Threads den Aufruf der Methode geschieht ersten.
Einen Ruhestrom Konsistenz beschreibt, ein klares Programm, um alle threads " Verhaltensweisen. das ist keine überlappungen erlaubt sind, da es erforderlich ist, eine ruhige Zeit zwischen zwei Methodenaufrufen.
Einer sequentiellen Konsistenz ermöglicht es überschneidungen, aber erfordert, kann man ein Programm finden, um in dem alle Methodenaufrufe werden kann, in einen Ort, und noch immer gibt richtigen Wert und verhält sich korrekt.