Interlockedcompareexchange-Funktion
Vergleicht die Eingabe mit dem Vergleichswert und tauscht das Ergebnis atomarisch 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.
-
_ Wert vergleichen [ in]
-
Typ: uint
Der Vergleichswert.
-
Wert [ in]
-
Typ: uint
Der Eingabewert.
-
ursprünglicher _ Wert ausgehend []
-
Typ: uint
Der ursprüngliche Wert.
Rückgabewert
Diese Funktion gibt keinen Wert zurück.
Bemerkungen
Vergleicht atomisch den Wert von " dest " mit dem Vergleichs _ Wert, speichert den Wert in " dest ", wenn die Werte entsprechen, und gibt den ursprünglichen Wert von " dest " im ursprünglichen _ Wert zurück Dieser Vorgang kann nur für typisierte int -oder uint -Ressourcen und Shared Memory-Variablen ausgeführt werden. Es gibt drei Verwendungsmöglichkeiten für diese Funktion. Der erste ist, wenn R ein Variablentyp für den gemeinsamen Speicher ist. In diesem Fall führt die Funktion den Vorgang für das Shared Memory-Register aus, auf das von dest verwiesen wird. Das zweite Szenario ist, wenn R ein Ressourcen Variablentyp ist. In diesem Szenario führt die Funktion den Vorgang an dem Ressourcen Speicherort aus, auf den " dest" verweist. Das dritte Szenario ist, dass R ein lokaler Variablentyp ist. In diesem Szenario wird die Funktion auf den Vorgang reduziert, der mit lokalen Vorgängen ausgeführt wird. Dieser Vorgang ist nur verfügbar, wenn R lesbar und beschreibbar ist.
Hinweis
Wenn Sie in einer for -oder while -Compute-Shader-Schleife interlockedcompareexchange aufrufen, müssen Sie für die ordnungsgemäße Kompilierung das Attribut " [ _ UAV- _ ] Bedingung zulassen " in dieser Schleife verwenden.
Diese Funktion wird in den folgenden Typen von Shadern unterstützt:
| VS | Jh | DS | GS | PS | CS |
|---|---|---|---|---|---|
| x | x | x | x | x | x |
Weitere Informationen