Я читаю память-порядка в https://en.cppreference.com/w/cpp/atomi ... y_order.in в разделе «Объяснение», пример приведен,
// 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>
И он говорит < /p>
... В частности, это может произойти, если D будет завершен до c в потоке 2 , либо из-за переупорядочения компилятора, либо во время выполнения < /p>
< /blockquote>
Мне интересно, что, как c, секвенированное, до D, как может переупорядочить компилятор C и D? /p>
от https://en.cppreference.com/w/cpp/language/eval_order, определение секвенированного до переднего гарантирует, что как вычисление значений, так и побочные эффекты выражения будут завершены перед другим выражением b, если А секвенированного до б.
Подробнее здесь: https://stackoverflow.com/questions/794 ... s-a-sequen
Модифицирует ли компилятор порядок завершения пары экспрессии, которая имеет порядок секвенирования перед домом? ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение