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