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

Programme in C++. Entwicklerforum
Anonymous
 Wird der Compiler die Abschlussreihenfolge eines Expressionspaars ändern, das eine sequenzierte Bestellung hat?

Post by Anonymous »

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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post