Какие операции называются блокированными?

Я пытаюсь прояснить для себя, что именно означает «взаимосвязанный». Я прочитал следующее: «Блокированные функции обеспечивают простой механизм для синхронизации доступа к переменной, которая используется несколькими потоками. Они также выполняют операции с переменными атомарным способом».

Так могут ли следующие функции называться блокированными?

#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

Решение

Блокировка означает, что параллельные операции приведут к ожидаемому результату. То есть если вы выполните сложное сложение пять раз, переменная будет увеличена пять раз. Не больше и не меньше.

1

Другие решения

Это не обманчиво называть эти функции как таковые, но вы все равно должны документировать их семантику, предпочтительно используя какое-то формальное описание, которое поддерживает примитивы параллелизма.

0

По вопросам рекламы [email protected]