Funzione InterlockedCompareExchange
Confronta l'input con il valore di confronto e scambia il risultato, in modo atomico.
Sintassi
void InterlockedCompareExchange(
in UINT dest,
in UINT compare_value,
in UINT value,
out UINT original_value
);
Parametri
-
dest [in]
-
Tipo: UINT
Indirizzo di destinazione.
-
compare_value [in]
-
Tipo: UINT
Valore di confronto.
-
value [in]
-
Tipo: UINT
Valore di input.
-
original_value [out]
-
Tipo: UINT
Valore originale.
Valore restituito
Questa funzione non restituisce un valore.
Commenti
Confronta in modo atomico il valore in dest con compare_value, archivia il valore in dest se i valori corrispondono, restituisce il valore originale di dest in original_value. Questa operazione può essere eseguita solo su risorse tipizzate int o uint e variabili di memoria condivisa. Per questa funzione sono disponibili tre usi possibili. Il primo è quando R è un tipo di variabile di memoria condivisa. In questo caso, la funzione esegue l'operazione sul registro di memoria condivisa a cui fa riferimento dest. Il secondo scenario è quando R è un tipo di variabile di risorsa. In questo scenario, la funzione esegue l'operazione sulla posizione della risorsa a cui fa riferimento dest. Infine, il terzo scenario è quando R è un tipo di variabile locale. In questo scenario, la funzione riduce all'operazione eseguita usando le operazioni locali. Questa operazione è disponibile solo quando R è leggibile e scrivibile.
Nota
Se si chiama InterlockedCompareExchange in un ciclo for o while compute shader, per eseguire correttamente la compilazione, è necessario utilizzare l'attributo [allow_uav_condition] su tale ciclo.
Questa funzione è supportata nei tipi di shader seguenti:
VS | HS | DS | GS | PS | CS |
---|---|---|---|---|---|
x | x | x | x | x | x |
Vedi anche