Ich versuche mir klarzumachen, was "verzahnt" genau bedeutet. Ich habe Folgendes gelesen: "Die verzahnten Funktionen bieten einen einfachen Mechanismus zum Synchronisieren des Zugriffs auf eine Variable, die von mehreren Threads gemeinsam genutzt wird. Sie führen auch Operationen auf Variablen auf atomare Weise aus."Welche Operationen werden miteinander verknüpft?
Also könnten die folgenden Funktionen gesperrt genannt werden?
#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();
}
Wenn nein, schlagen Sie bitte einen richtigen Namen vor.
'Interlocked' bedeutet meiner Erfahrung nach nichts wirklich Spezifisches (ich kann mich jedoch irren). Es ist eher eine Bezeichnung für Utility-Funktionen, die atomare Primitive umhüllen. Also ja, ich würde sagen, es ist in Ordnung, diese Funktionen als "verriegelt" zu bezeichnen, obwohl es vielleicht überraschend ist, eine Sperre in einer solchen Funktion zu verwenden. – Cameron