Partager via


fonctions intrinsèques de _InterlockedCompareExchangePointer

Section spécifique à Microsoft

Effectue une opération atomique qui stocke l'adresse Exchange dans l'adresse Destination si les adresses Comparand et Destination sont égales.

void * _InterlockedCompareExchangePointer (    void * volatile * Destination,    void * Exchange,    void * Comparand ); void * _InterlockedCompareExchangePointer_acq (    void * volatile * Destination,    void * Exchange,    void * Comparand ); void * _InterlockedCompareExchangePointer_HLEAcquire (    void * volatile * Destination,    void * Exchange,    void * Comparand ); void * _InterlockedCompareExchangePointer_HLERelease (    void * volatile * Destination,    void * Exchange,    void * Comparand ); void * _InterlockedCompareExchangePointer_nf (    void * volatile * Destination,    void * Exchange,    void * Comparand ); void * _InterlockedCompareExchangePointer_np (    void * volatile * Destination,    void * Exchange,    void * Comparand ); long _InterlockedCompareExchangePointer_rel (    void * volatile * Destination,    void * Exchange,    void * Comparand );

Paramètres

  • [in, out] Destination
    Pointeur vers un pointeur vers la valeur de destination. Le signe est ignoré.

  • [in] Exchange
    Pointeur d'échange. Le signe est ignoré.

  • [in] Comparand
    Pointeur à comparer à la destination. Le signe est ignoré.

Valeur de retour

La valeur de retour est la valeur initiale de la destination.

Configuration requise

Intrinsèque

Architecture

Header

_InterlockedCompareExchangePointer

x86, ARM, x64

<intrin.h>

_InterlockedCompareExchangePointer_acq, _InterlockedCompareExchangePointer_nf, _InterlockedCompareExchangePointer_rel

ARM

<iiintrin.h>

_InterlockedCompareExchangePointer_HLEAcquire, _InterlockedCompareExchangePointer_HLERelease

x86, x64

<immintrin.h>

Notes

_InterlockedCompareExchangePointer effectue une comparaison atomique de l'adresse Destination à l'adresse Comparand. Si l'adresse Destination est égale à l'adresse Comparand, l'adresse Exchange est stockée dans l'adresse spécifiée par Destination. Dans le cas contraire, aucune opération n'est effectuée.

_InterlockedCompareExchangePointer fournit la prise en charge intrinsèque du compilateur pour la fonction Win32 _InterlockedCompareExchangePointer du Kit de développement logiciel Windows.

Pour obtenir un exemple de l'utilisation de _InterlockedCompareExchangePointer, consultez _InterlockedDecrement.

Sur les plateformes ARM, utilisez les fonctions intrinsèques avec des suffixes _acq et _rel si vous devez acquérir et libérer des éléments de la sémantique, comme le début et la fin d'une section critique. Les fonctions intrinsèques ARM avec un suffixe _nf (pour « no fence », « pas de délimitation ») n'agissent pas comme une barrière mémoire.

Les fonctions intrinsèques avec un suffixe _np (pour « no prefetch », « pas de prérécupération ») empêchent l'insertion par le compilateur d'une possible opération de prérécupération.

Sur les plateformes Intel qui prennent en charge les instructions HLE (Hardware Lock Elision), les fonctions intrinsèques avec les suffixes _HLEAcquire et _HLERelease comprennent une indication pour le processeur qui peut accélérer les performances en éliminant une étape d'écriture de verrou dans le matériel. Si ces fonctions intrinsèques sont appelées sur des plateformes qui ne prennent pas en charge HLE, l'indication est ignorée.

Ces routines sont disponibles seulement comme fonctions intrinsèques.

Voir aussi

Référence

intrinsèques du compilateur

Mots clés C++