InterlockedCompareExchange-Funktion (HLSL-Referenz)
Vergleicht das Ziel atomar mit dem Vergleichswert. Wenn sie identisch sind, wird das Ziel mit dem Eingabewert überschrieben. Der ursprüngliche Wert wird auf den ursprünglichen Wert des Ziels festgelegt.
Syntax
void InterlockedCompareExchange(
in R dest,
in T compare_value,
in T value,
out T original_value
);
Parameter
-
dest [in]
-
Typ: R
Die Zieladresse.
-
compare_value [in]
-
Typ: T
Der Vergleichswert.
-
Wert [in]
-
Typ: T
Der Eingabewert.
-
original_value [out]
-
Typ: T
Der ursprüngliche Wert.
Rückgabewert
Diese Funktion gibt keinen Wert zurück.
Bemerkungen
Vergleicht atomar den Wert, auf den von dest verwiesen wird, mit compare_value, speichert den Wert an der Position, auf die von dest verwiesen wird, 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 zwei 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. Dieser Vorgang ist nur verfügbar, wenn R lesbar und schreibbar ist.
Ineinandergreifende Vorgänge bedeuten keinen Speicherzaun bzw. keine Barriere.
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.
Minimales Shadermodell
Diese Funktion wird in den folgenden Shadermodellen unterstützt.
Shadermodell | Unterstützt |
---|---|
Shadermodell 5 und höher | ja |
Diese Funktion wird in den folgenden Shadertypen unterstützt:
Scheitelpunkt | Hull | Domain | Geometrie | Pixel | Compute |
---|---|---|---|---|---|
x | x | x | x | x | x |
Siehe auch