Я пытаюсь прояснить для себя, что именно означает «взаимосвязанный». Я прочитал следующее: «Блокированные функции обеспечивают простой механизм для синхронизации доступа к переменной, которая используется несколькими потоками. Они также выполняют операции с переменными атомарным способом».
Так могут ли следующие функции называться блокированными?
#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();
}
Если нет, предложите правильное имя, пожалуйста.
Блокировка означает, что параллельные операции приведут к ожидаемому результату. То есть если вы выполните сложное сложение пять раз, переменная будет увеличена пять раз. Не больше и не меньше.
Это не обманчиво называть эти функции как таковые, но вы все равно должны документировать их семантику, предпочтительно используя какое-то формальное описание, которое поддерживает примитивы параллелизма.