11/09/24 18:20:59.69
>>716
だから、ECMA-335において、たとえば以下のようなコードでは
volatile int a = 0;
volatile int b = 0;
Thread1: { a = 1; int r1 = b; }
Thread2: { b = 1; int r2 = a; }
r1 == 0 && r2 == 0 という結果も許されるんじゃないかな。
一方で、JavaのvolatileやC++11のstd::atomicはこういう結果を許さない。