Fonction InterlockedCompareExchange (miniport.h)
La routine InterlockedCompareExchange effectue une opération atomique qui compare la valeur d’entrée pointée par Destination à la valeur comparand.
Syntaxe
LONG InterlockedCompareExchange(
[in, out] LONG volatile *Destination,
LONG ExChange,
LONG Comperand
);
Paramètres
[in, out] Destination
Pointeur vers la valeur d’entrée comparée à la valeur de Comparand.
ExChange
Spécifie la valeur de sortie pointée par Destination si la valeur d’entrée pointée par Destination est égale à la valeur de Comparand.
Comperand
Spécifie la valeur qui est comparée à la valeur d’entrée pointée par Destination.
Valeur retournée
InterlockedCompareExchange retourne la valeur d’origine de *Destination.
Remarques
Si Comparand est égal à *Destination, *Destination est défini sur Exchange. Sinon, *Destination est inchangée.
InterlockedCompareExchange fournit un moyen atomique rapide de synchroniser le test et la mise à jour d’une variable partagée par plusieurs threads. Si la valeur d’entrée pointée par Destination est égale à la valeur de Comparand, la valeur de sortie de Destination est définie sur la valeur d’Exchange.
InterlockedCompareExchange est conçu pour la vitesse et, généralement, est implémenté en ligne par un compilateur. InterlockedCompareExchange est atomique uniquement par rapport aux autres appels Xxx verrouillés. Il n’utilise pas de verrou de rotation et peut être utilisé en toute sécurité sur des données paginables.
Les opérations verrouillées ne peuvent pas être utilisées sur la mémoire non mise en cache.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows 2000. |
Plateforme cible | Universal |
En-tête | miniport.h (incluent Wdm.h, Ntddk.h, Ntifs.h, Miniport.h) |
Bibliothèque | OneCoreUAP.lib sur Windows 10 |
IRQL | N’importe quel niveau |
Voir aussi
ExInterlockedCompareExchange64