我想爲自己說清楚什麼是「互鎖」的意思。我閱讀以下內容:「互鎖函數提供了一種簡單的機制,用於同步對多線程共享的變量的訪問,並以原子方式對變量執行操作。」什麼操作被稱爲互鎖?
那麼下面的函數可以被稱爲互鎖嗎?
#include <QtCore>
#include <QAtomicPointer>
QAtomicInt i;
void interlockedMultiply(int factor)
{
int oldValue;
do
{
oldValue = i;
} while (!i.testAndSetOrdered(oldValue, oldValue * factor));
}
long long x;
QReadWriteLock lock;
void interlockedAdd(long long y)
{
lock.lockForWrite();
x += y;
lock.unlock();
}
如果不是,請建議一個專用名稱。
在我的經驗中,「互鎖」並不意味着任何過於具體的東西(儘管我可能是錯的)。它更多的是應用於包裝原子基元的實用函數的標籤。所以是的,我認爲將這些函數標記爲「互鎖」是可以的,儘管在這樣的函數中使用鎖可能令人驚訝。 – Cameron