Wird der Compiler die Abschlussreihenfolge eines Expressionspaars ändern, das eine sequenzierte Bestellung hat?

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Wird der Compiler die Abschlussreihenfolge eines Expressionspaars ändern, das eine sequenzierte Bestellung hat?

by Anonymous » 23 Feb 2025, 14:09

Ich habe Memory-Corder-Dinge in https://en.cppreference.com/w/cpp/atomi ... y_Order.in In dem Abschnitt 'Erläuterung' gelesen, ein Beispiel wird angegeben,
// Thread 1:
r1 = y.load(std::memory_order_relaxed); // A
x.store(r1, std::memory_order_relaxed); // B
// Thread 2:
r2 = x.load(std::memory_order_relaxed); // C
y.store(42, std::memory_order_relaxed); // D
< /code>
und es heißt < /p>

...in Besonders kann dies auftreten, wenn D vor C in Thread 2 abgeschlossen ist Entweder aufgrund der Neuordnung von Compiler oder zur Laufzeit < /p>
< /blockquote>
frage ich mich, dass C und D? < /p>
von https://en.cppreference.com/w/cpp/slanguage/eval_order garantiert die Definition von sequenziertem, vorne, dass sowohl die Wertberechnung als auch die Nebenwirkung eines Ausdrucks A vor einem anderen Expression B abgeschlossen werden, wenn A wird vorbo.

Top