多核心與同步
將上方的兩個執行緒在不同的核心上同時執行(假設編譯器不進行重新排序)。下列哪一個結果在循序一致性下不會發生,但在x86等實際的CPU上可能發生?
// 一開始 x = 0, y = 0
// 執行緒1 // 執行緒2
x = 1; y = 1;
r1 = y; r2 = x;
- Ar1 = 1 且 r2 = 1
- Br1 = 0 且 r2 = 1
- Cr1 = 0 且 r2 = 0
多核心與同步
// 一開始 x = 0, y = 0
// 執行緒1 // 執行緒2
x = 1; y = 1;
r1 = y; r2 = x;