我有一个多线程应用程序 (C++),我需要在其中增加/更改一系列值。如果我使用一系列互锁操作,它们是否被视为单个原子操作?就像在这个例子中一样:
InterlockedIncrement(&value1);
InterlockedIncrement(&value2);
InterlockedExchange(&oldValue, newValue);
还是给我们一个锁来执行同步会更好?像这样:
EnterCriticalSection(&cs);
value1++;
value2++;
oldValue = newValue;
LeaveCriticalSection(&cs);
我认为需要锁,但我不确定......所有值都处于旧状态或新状态非常重要。