Partager via


InterlockedCompareExchange, fonction (wdm.h)

La routine InterlockedCompareExchange effectue une opération atomique qui compare la valeur d’entrée pointée par destination avec la valeur de Comperand.

Syntaxe

LONG CDECL_NON_WVMPURE InterlockedCompareExchange(
  [in, out] LONG volatile *Destination,
  [in]      LONG          ExChange,
  [in]      LONG          Comperand
);

Paramètres

[in, out] Destination

Pointeur vers la valeur d’entrée qui est comparée à la valeur de Comperand.

[in] 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 Comperand.

[in] Comperand

Spécifie la valeur qui est comparée à la valeur d’entrée pointée par Destination.

Valeur de retour

InterlockedCompareExchange retourne la valeur d’origine de *Destination.

Remarques

Si Comperand est égal à *de destination, * de destination est défini sur Exchange . Sinon, *destination n’est pas modifiée.

interlockedCompareExchange offre un moyen rapide et atomique de synchroniser les tests 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 Comperand, la valeur de sortie de Destination est définie sur la valeur de Exchange.

interlockedCompareExchange est conçu pour la vitesse et, généralement, est implémenté en ligne par un compilateur. interlockedCompareExchange n’est atomique que par rapport à d’autres appels interbloquésXxx. Il n’utilise pas de verrou de rotation et peut être utilisé en toute sécurité sur les données paginables.

Les opérations verrouillées ne peuvent pas être utilisées sur la mémoire non mise en cache.

Exigences

Exigence Valeur
client minimum pris en charge Disponible à partir de Windows 2000.
plateforme cible Universel
d’en-tête wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Miniport.h)
bibliothèque OneCoreUAP.lib sur Windows 10
IRQL N’importe quel niveau

Voir aussi

ExInterlockedCompareExchange64

InterlockedCompareExchangePointer

InterlockedDecrement

interlockedExchange

interlockedExchangePointer

interlockedIncrement