InterlockedCompareExchange-Funktion
Vergleicht die Eingabe mit dem Vergleichswert und tauscht das Ergebnis atomar aus.
Syntax
void InterlockedCompareExchange(
in UINT dest,
in UINT compare_value,
in UINT value,
out UINT original_value
);
Parameter
-
dest [in]
-
Typ: UINT
Die Zieladresse.
-
compare_value [in]
-
Typ: UINT
Der Vergleichswert.
-
Wert [in]
-
Typ: UINT
Der Eingabewert.
-
original_value [out]
-
Typ: UINT
Der ursprüngliche Wert.
Rückgabewert
Diese Funktion gibt keinen Wert zurück.
Bemerkungen
Vergleicht den Wert in dest atomar mit compare_value, speichert den Wert in dest , wenn die Werte übereinstimmen, und gibt den ursprünglichen Wert von dest in original_value zurück. Dieser Vorgang kann nur für int - oder uint-typisierte Ressourcen und freigegebene Arbeitsspeichervariablen ausgeführt werden. Es gibt drei mögliche Verwendungsmöglichkeiten für diese Funktion. Die erste ist, wenn R ein Variablentyp mit freigegebenem Speicher ist. In diesem Fall führt die Funktion den Vorgang für das freigegebene Speicherregister aus, auf das von dest verwiesen wird. Das zweite Szenario ist, wenn R ein Ressourcenvariablentyp ist. In diesem Szenario führt die Funktion den Vorgang für den Ressourcenspeicherort aus, auf den von dest verwiesen wird. Schließlich ist das dritte Szenario, wenn R ein lokaler Variablentyp ist. In diesem Szenario reduziert sich die Funktion auf den Vorgang, der mit lokalen Vorgängen ausgeführt wird. Dieser Vorgang ist nur verfügbar, wenn R lesbar und schreibbar ist.
Hinweis
Wenn Sie InterlockedCompareExchange in einer for - oder while-Compute-Shaderschleife aufrufen, müssen Sie für die ordnungsgemäße Kompilierung das [allow_uav_condition]- Attribut für diese Schleife verwenden.
Diese Funktion wird in den folgenden Shadertypen unterstützt:
VS | HS | DS | GS | PS | CS |
---|---|---|---|---|---|
x | x | x | x | x | x |
Siehe auch