Page 1 of 1

GCC Wiki Memory Bared Probe

Posted: 02 Apr 2025, 05:32
by Anonymous
// -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 */
< /code>
Da Threads nicht über das System synchronisiert werden müssen, kann entweder in diesem Beispiel tatsächlich fehlschlagen.

Ich kann herausfinden, warum ein Versäumnis behaupten kann. Aber warum behaupten B auch scheitern können?>