私は状態変数を持っています。 INT状態=(2、1、0) と無限ループ:この状態で変数をアトミックに設定しています
ret = BoolCompareAndSwap(state, 1, 2)
if (ret) {
// Change something ...
state = 0;
}
この状態設定がアトミックですか? 、いくつかの他のスレッドが来て、変数を比較した場合
新しい値を設定し
- : は、あなたがしなければならない変数を設定すると仮定すると、実際の値はメモリに再設定されるまで変更されないため、アトミックになります。
原子変数について以前に質問されたこの[質問](https://stackoverflow.com/questions/25319825/how-to-use-atomic-variables-in-c)を参照してください。状態設定の順序は、スレッディングがどのように行われるか、すなわちスレッドを安全にするかどうかに依存する。 – t0mm13b