Partager via


InterlockedExchangeAdd, fonction (winnt.h)

Effectue un ajout atomique de deux valeurs 32 bits.

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

Syntaxe

LONG InterlockedExchangeAdd(
  [in, out] LONG volatile *Addend,
  [in]      LONG          Value
);

Paramètres

[in, out] Addend

Pointeur vers une variable. La valeur de cette variable sera remplacée par le résultat de l’opération.

[in] Value

Valeur à ajouter à la variable pointée par le paramètre Addend.

Valeur de retour

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

Remarques

La fonction effectue un ajout atomique de Valeur à la valeur pointée par Addend. Le résultat est stocké dans l’adresse spécifiée par Addend. La fonction retourne la valeur initiale de la variable pointée par Addend.

Les variables de cette fonction doivent être alignées sur une limite 32 bits ; sinon, cette fonction se comporte de manière imprévisible sur les systèmes x86 multiprocesseurs et tous les systèmes autres que x86. Voir _aligned_malloc.

Les fonctions interblocé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 interblocé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 _InterlockedExchangeAdd

Cette fonction génère une barrière de mémoire complète (ou clôture) pour vous 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 InterlockedExchangeAddAcquire à la place.

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

Exigences

Exigence Valeur
client minimum pris en charge Windows XP [applications de bureau | Applications UWP]
serveur minimum pris en charge Windows Server 2003 [applications de bureau | Applications UWP]
plateforme cible Windows
d’en-tête winnt.h (include Windows.h)
bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

d’accès aux variables verrouillées

InterlockedCompareExchange

interlockedExchange

InterlockedExchangeAdd64

InterlockedExchangeAddAcquire

">InterlockedExchangeAddAcquire64

InterlockedExchangeAddNoFence

InterlockedExchangeAddNoFence64

<un href="/previous-versions/windows/desktop/legacy/ms683605(v=vs.85) ». InterlockedExchangeAddRelease

InterlockedExchangeAddRelease64

InterlockedExchangeSubtract

fonctions de synchronisation