Funzione InterlockedExchangeAdd (winnt.h)

Esegue un'aggiunta atomica di due valori a 32 bit.

Per operare su valori a 64 bit, usare la funzione InterlockedExchangeAdd64 .

Sintassi

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

Parametri

[in, out] Addend

Puntatore a una variabile. Il valore di questa variabile verrà sostituito con il risultato dell'operazione.

[in] Value

Valore da aggiungere alla variabile a cui punta il parametro Addend .

Valore restituito

La funzione restituisce il valore iniziale del parametro Addend .

Commenti

La funzione esegue un'aggiunta atomica di Value al valore a cui punta Addend. Il risultato viene archiviato nell'indirizzo specificato da Addend. La funzione restituisce il valore iniziale della variabile a cui fa riferimento Addend.

Le variabili per questa funzione devono essere allineate su un limite a 32 bit; in caso contrario, questa funzione si comporta in modo imprevedibile nei sistemi x86 multiprocessore e in tutti i sistemi non x86. Vedere _aligned_malloc.

Le funzioni interlock forniscono un meccanismo semplice per la sincronizzazione dell'accesso a una variabile condivisa da più thread. Questa funzione è atomica rispetto alle chiamate ad altre funzioni interlock.

Questa funzione viene implementata usando un intrinseco del compilatore, se possibile. Per altre informazioni, vedere il file di intestazione WinBase.h e _InterlockedExchangeAdd

Questa funzione genera una barriera di memoria completa (o recinzione) per garantire che le operazioni di memoria vengano completate in ordine.

Sistemi basati su Itanium: Per le applicazioni critiche per le prestazioni, usare invece InterlockedExchangeAddAcquire .

Nota Questa funzione è supportata nei sistemi basati su Windows RT.
 

Requisiti

   
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione winnt.h (includere Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

Accesso variabile interlocked

InterlockedCompareExchange

InterlockedExchange

InterlockedExchangeAdd64

InterlockedExchangeAddAcquire

InterlockedExchangeAddAcquire64

InterlockedExchangeAddNoFence

InterlockedExchangeAddNoFence64

InterlockedExchangeAddRelease

InterlockedExchangeAddRelease64

InterlockedExchangeSubtract

Funzioni di sincronizzazione