Partager via


Fonction InterlockedCompareExchange128 (winnt.h)

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

Pour fonctionner sur des valeurs 16 bits, utilisez la fonction InterlockedCompareExchange16 .

Pour fonctionner sur des valeurs 32 bits, utilisez la fonction InterlockedCompareExchange .

Pour fonctionner sur des valeurs 64 bits, utilisez la fonction InterlockedCompareExchange64 .

Syntaxe

BOOLEAN InterlockedCompareExchange128(
  [in, out] LONG64 volatile *Destination,
  [in]      LONG64          ExchangeHigh,
  [in]      LONG64          ExchangeLow,
  [in, out] LONG64          *ComparandResult
);

Paramètres

[in, out] Destination

Pointeur vers la valeur de destination. Ce paramètre est un tableau de deux entiers 64 bits considérés comme un champ de 128 bits.

[in] ExchangeHigh

Partie élevée de la valeur d’échange.

[in] ExchangeLow

Partie inférieure de la valeur d’échange.

[in, out] ComparandResult

Valeur à laquelle comparer. Ce paramètre est un tableau de deux entiers 64 bits considérés comme un champ de 128 bits. Lors de la sortie, celle-ci est remplacée par la valeur d’origine de la destination.

Valeur retournée

La fonction retourne 1 si ComparandResult est égal à la valeur d’origine du paramètre Destination , ou 0 si ComparandResult n’est pas égal à la valeur d’origine du paramètre Destination .

Remarques

La fonction compare la valeur Destination à la valeur ComparandResult :

  • Si la valeur Destination est égale à la valeur ComparandResult , les valeurs ExchangeHigh et ExchangeLow sont stockées dans le tableau spécifié par Destination, ainsi que dans le tableau spécifié par ComparandResult.
  • Sinon, la destination n’est pas modifiée.
Quel que soit le résultat de la comparaison, la valeur Destination d’origine est stockée dans le tableau spécifié par ComparandResult.

Les paramètres de cette fonction doivent être alignés sur une limite de 16 octets ; sinon, la fonction se comportera de manière imprévisible sur les systèmes x64. Voir _aligned_malloc.

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 n’est disponible que sur les systèmes x64 et elle est implémentée à l’aide d’une intrinsèque du compilateur. Pour plus d’informations, consultez le fichier d’en-tête WinBase.h et _InterlockedCompareExchange128.

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.

Configuration requise

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

Voir aussi

Accès aux variables verrouillées

InterlockedCompare64Exchange128

InterlockedCompareExchange

InterlockedCompareExchange16

InterlockedCompareExchange16Acquire

InterlockedCompareExchange16NoFence

InterlockedCompareExchange16Release

InterlockedCompareExchange64

InterlockedCompareExchangeAcquire

InterlockedCompareExchangeAcquire64

InterlockedCompareExchangeNoFence

InterlockedCompareExchangeNoFence64

InterlockedCompareExchangePointer

InterlockedCompareExchangePointerAcquire

InterlockedCompareExchangePointerNoFence

InterlockedCompareExchangePointerRelease

InterlockedCompareExchangeRelease

InterlockedCompareExchangeRelease64

Fonctions de synchronisation