Partager via


Fonction InterlockedCompareExchangePointer (winnt.h)

Effectue une opération de comparaison et d’échange atomique sur les valeurs spécifiées. La fonction compare deux valeurs de pointeur spécifiées et échange avec une autre valeur de pointeur en fonction du résultat de la comparaison.

Pour utiliser des valeurs autres que des pointeurs, utilisez la fonction InterlockedCompareExchange .

Syntaxe

PVOID InterlockedCompareExchangePointer(
  [in, out] PVOID volatile *Destination,
  [in]      PVOID          Exchange,
  [in]      PVOID          Comperand
);

Paramètres

[in, out] Destination

Pointeur vers un pointeur vers la valeur de destination.

[in] Exchange

Valeur d’échange.

[in] Comperand

Valeur à comparer à Destination.

Valeur retournée

La fonction retourne la valeur initiale du paramètre Destination .

Remarques

La fonction compare la valeur Destination à la valeur Comparand . Si la valeur Destination est égale à la valeur Comparand , la valeur Exchange est stockée dans l’adresse spécifiée par Destination. Dans le cas contraire, aucune opération n'est effectuée.

Sur un système 64 bits, les paramètres sont de 64 bits et doivent être alignés sur les limites 64 bits ; sinon, la fonction se comportera de manière imprévisible. Sur un système 32 bits, les paramètres sont 32 bits et doivent être alignés sur les limites 32 bits.

Les fonctions verrouillées fournissent un mécanisme simple pour synchroniser l’accès à une variable partagée par plusieurs threads. Cette fonction est atomique par rapport aux appels à d’autres fonctions verrouillées.

Cette fonction est implémentée à l’aide d’une intrinsèque du compilateur dans la mesure du possible. Pour plus d’informations, consultez le fichier d’en-tête WinBase.h et _InterlockedCompareExchangePointer.

Cette fonction génère une barrière de mémoire complète (ou clôture) pour s’assurer que les opérations de mémoire sont effectuées dans l’ordre.

Systèmes itanium : Pour les applications critiques en matière de performances, utilisez à la place InterlockedCompareExchangePointerAcquire ou InterlockedCompareExchangePointerRelease .

Note Cette fonction est prise en charge sur les systèmes Windows RT.
 

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête winnt.h (inclure Windows.h)

Voir aussi

Accès aux variables verrouillées

InterlockedCompare64Exchange128

InterlockedCompareExchange

InterlockedCompareExchange128

InterlockedCompareExchange16

InterlockedCompareExchange16Acquire

InterlockedCompareExchange16NoFence

InterlockedCompareExchange16Release

InterlockedCompareExchange64

InterlockedCompareExchangeAcquire

InterlockedCompareExchangeAcquire64

InterlockedCompareExchangeNoFence

InterlockedCompareExchangeNoFence64

InterlockedCompareExchangePointerAcquire

InterlockedCompareExchangePointerNoFence

InterlockedCompareExchangePointerRelease

InterlockedCompareExchangeRelease

InterlockedCompareExchangeRelease64

Fonctions de synchronisation