我试图让自己明确“联锁”究竟意味着什么。我阅读了以下内容:“互锁函数提供了一种简单的机制,用于同步对多个线程共享的变量的访问。它们还以原子方式对变量执行操作。”
以下函数可以被称为互锁吗?
#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();
}
如果不是,请提出正确的名称。
答案 0 :(得分:1)
互锁意味着并发操作将产生预期结果。即如果您执行五次互锁添加,变量将增加五次。不多也不少。
答案 1 :(得分:0)
将这些函数命名为这样的函数并不具有欺骗性,但您仍应记录它们的语义,最好使用某种支持并发原语的形式描述。