什么操作被称为互锁?

时间:2016-03-29 13:41:57

标签: c++ multithreading qt interlocked

我试图让自己明确“联锁”究竟意味着什么。我阅读了以下内容:“互锁函数提供了一种简单的机制,用于同步对多个线程共享的变量的访问。它们还以原子方式对变量执行操作。”

以下函数可以被称为互锁吗?

#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();
}

如果不是,请提出正确的名称。

2 个答案:

答案 0 :(得分:1)

互锁意味着并发操作将产生预期结果。即如果您执行五次互锁添加,变量将增加五次。不多也不少。

答案 1 :(得分:0)

将这些函数命名为这样的函数并不具有欺骗性,但您仍应记录它们的语义,最好使用某种支持并发原语的形式描述。