我有一個多線程應用程序(C++),我需要增加/更改一系列值。 如果我使用一系列互鎖操作,它們是否被認爲是單個原子操作?像這樣的例子:我可以使用互鎖操作更新多個值以避免鎖定臨界區/互斥量嗎?
InterlockedIncrement(&value1);
InterlockedIncrement(&value2);
InterlockedExchange(&oldValue, newValue);
或者它會更好地執行同步?就像這樣:
EnterCriticalSection(&cs);
value1++;
value2++;
oldValue = newValue;
LeaveCriticalSection(&cs);
我覺得需要一個鎖,但我不知道......所有的值是無論是在舊的國家,還是在新的,一起是非常重要的。
要添加到此,請勿直接使用EnterCriticalSection&LeaveCriticalSection,因爲如果發生異常,LeaveCriticalSection可能不會被調用。因此,使用CSingleLock類將自動爲您鎖定和解鎖關鍵部分。 – Naveen 2009-06-12 05:03:34