Condividi tramite


Funzione InterlockedCompareExchange (riferimento HLSL)

Confronta in modo atomico la destinazione con il valore di confronto. Se sono identiche, la destinazione viene sovrascritta con il valore di input. Il valore originale è impostato sul valore originale della destinazione.

Sintassi

void InterlockedCompareExchange(
  in  R dest,
  in  T compare_value,
  in  T value,
  out T original_value
);

Parametri

dest [in]

Tipo: R

Indirizzo di destinazione.

compare_value [in]

Tipo: T

Valore di confronto.

valore [in]

Tipo: T

Valore di input.

original_value [out]

Tipo: T

Valore originale.

Valore restituito

Questa funzione non restituisce un valore.

Commenti

Confronta in modo atomico il valore a cui fa riferimento la compare_value, archivia il valore nella posizione a cui fa riferimento se i valori corrispondono, restituisce il valore originale della original_value. Questa operazione può essere eseguita solo su risorse digitate int o uint e variabili di memoria condivise. Per questa funzione sono disponibili due possibili usi. Il primo è quando R è un tipo di variabile di memoria condivisa. In questo caso, la funzione esegue l'operazione nel registro di memoria condivisa a cui fa riferimento il più possibile. Il secondo scenario è quando R è un tipo di variabile di risorsa. In questo scenario, la funzione esegue l'operazione sul percorso della risorsa a cui fa riferimento il più possibile. Questa operazione è disponibile solo quando R è leggibile e scrivibile.

Le operazioni interlocked non implicano alcuna barriera/recinto di memoria.

Nota

Se si chiama InterlockedCompareExchange in un ciclo for o durante la compilazione corretta, è necessario usare l'attributo [allow_uav_condition] in tale ciclo.

 

Modello di shader minimo

Questa funzione è supportata nei modelli shader seguenti.

Modello di shader Supportato
Modelli shader 5 e versioni successive dello shader

 

Questa funzione è supportata nei tipi di shader seguenti:

Vertice Scafo Dominio Geometria Pixel Calcolo
x x x x x x

 

Vedi anche

Funzioni intrinseche

Modello shader 5