Fonction InterlockedCompareExchange
Compare l’entrée à la valeur de comparaison et échange le résultat, atomiquement.
Syntaxe
void InterlockedCompareExchange(
in UINT dest,
in UINT compare_value,
in UINT value,
out UINT original_value
);
Paramètres
-
dest [in]
-
Type : UINT
Adresse de destination.
-
compare_value [in]
-
Type : UINT
Valeur de comparaison.
-
value [in]
-
Type : UINT
Valeur d'entrée.
-
original_value [out]
-
Type : UINT
Valeur d'origine.
Valeur renvoyée
Cette fonction ne retourne pas de valeur.
Notes
Compare atomiquement la valeur dans dest à compare_value, stocke la valeur dans dest si les valeurs correspondent, retourne la valeur d’origine de dest dans original_value. Cette opération ne peut être effectuée que sur des ressources typées int ou uint et des variables de mémoire partagée. Il existe trois utilisations possibles pour cette fonction. La première est lorsque R est un type de variable de mémoire partagée. Dans ce cas, la fonction effectue l’opération sur le registre de mémoire partagée référencé par dest. Le deuxième scénario est lorsque R est un type de variable de ressource. Dans ce scénario, la fonction effectue l’opération sur l’emplacement de ressource référencé par dest. Enfin, le troisième scénario est lorsque R est un type de variable local. Dans ce scénario, la fonction réduit à l’opération effectuée à l’aide d’opérations locales. Cette opération n’est disponible que lorsque R est lisible et accessible en écriture.
Notes
Si vous appelez InterlockedCompareExchange dans une boucle for ou while compute shader, pour compiler correctement, vous devez utiliser l’attribut [allow_uav_condition] sur cette boucle.
Cette fonction est prise en charge dans les types de nuanceurs suivants :
VS | HS | Source de données | GS | PS | CS |
---|---|---|---|---|---|
x | x | x | x | x | x |
Voir aussi