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.

Osservazioni

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 punta 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 interlocked forniscono un meccanismo semplice per sincronizzare l'accesso a una variabile condivisa da più thread. Questa funzione è atomica rispetto alle chiamate ad altre funzioni interlock.

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

Questa funzione genera una barriera di memoria completa (o limite) 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.
 

Fabbisogno

Requisito Valore
client minimo supportato Windows XP [app desktop | App UWP]
server minimo supportato Windows Server 2003 [app desktop | App UWP]
piattaforma di destinazione Finestre
intestazione winnt.h (include Windows.h)
libreria Kernel32.lib
dll Kernel32.dll

Vedere anche

accesso a variabili interlocked

InterlockedCompareExchange

interlockedExchange

interlockedExchangeAdd64

InterlockedExchangeAddAcquire

">InterlockedExchangeAddAcquire64

InterlockedExchangeAddNoFence

InterlockedExchangeAddNoFence64

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

InterlockedExchangeAddRelease64

InterlockedExchangeSubtract

funzioni di sincronizzazione