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

Rwbyteaddressbuffer

Shader-Modell 5