一連の値をインクリメント/変更する必要があるマルチスレッド アプリケーション (C++) があります。一連のインターロック操作を使用する場合、それらは単一のアトミック操作と見なされますか? この例のように:
InterlockedIncrement(&value1);
InterlockedIncrement(&value2);
InterlockedExchange(&oldValue, newValue);
それとも、同期を実行するためにロックした方がよいでしょうか? このような:
EnterCriticalSection(&cs);
value1++;
value2++;
oldValue = newValue;
LeaveCriticalSection(&cs);
ロックが必要だと思いますが、よくわかりません...すべての値が古い状態または新しい状態にあることが非常に重要です。