Код: Выделить всё
// -Thread 1-
y.store (20, memory_order_relaxed)
x.store (10, memory_order_relaxed)
// -Thread 2-
if (x.load (memory_order_relaxed) == 10)
{
assert (y.load(memory_order_relaxed) == 20) /* assert A */
y.store (10, memory_order_relaxed)
}
// -Thread 3-
if (y.load (memory_order_relaxed) == 10)
assert (x.load(memory_order_relaxed) == 10) /* assert B */
Я могу выяснить, почему утверждение A может потерпеть неудачу. Но зачем утверждать, что B также может не сработать?>
Подробнее здесь: https://stackoverflow.com/questions/795 ... ied-sample
Мобильная версия