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 .
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
InterlockedCompareExchange16Acquire
InterlockedCompareExchange16NoFence
InterlockedCompareExchange16Release
InterlockedCompareExchangeAcquire
InterlockedCompareExchangeAcquire64
InterlockedCompareExchangeNoFence
InterlockedCompareExchangeNoFence64
InterlockedCompareExchangePointerAcquire
InterlockedCompareExchangePointerNoFence
InterlockedCompareExchangePointerRelease
InterlockedCompareExchangeRelease