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.
Ich habe Memory-Corder-Dinge in https://en.cppreference.com/w/cpp/atomic/Memory_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.