Fungsi InterlockedExchangeAdd (winnt.h)

Melakukan penambahan atom dua nilai 32-bit.

Untuk beroperasi pada nilai 64-bit, gunakan fungsi InterlockedExchangeAdd64 .

Sintaks

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

Parameter

[in, out] Addend

Penunjuk ke variabel. Nilai variabel ini akan diganti dengan hasil operasi.

[in] Value

Nilai yang akan ditambahkan ke variabel yang ditujukkan oleh parameter Tambahkan .

Mengembalikan nilai

Fungsi mengembalikan nilai awal parameter Addend .

Keterangan

Fungsi melakukan penambahan nilai atomik ke nilai yang ditunjukkan oleh Addend. Hasilnya disimpan dalam alamat yang ditentukan oleh Addend. Fungsi mengembalikan nilai awal variabel yang ditujukan oleh Addend.

Variabel untuk fungsi ini harus diselaraskan pada batas 32-bit; jika tidak, fungsi ini akan bertingkah tidak terduga pada sistem x86 multiprosedur dan sistem non-x86 apa pun. Lihat _aligned_malloc.

Fungsi yang saling diblokir menyediakan mekanisme sederhana untuk menyinkronkan akses ke variabel yang dibagikan oleh beberapa utas. Fungsi ini bersifat atomik sehubungan dengan panggilan ke fungsi lain yang saling diblokir.

Fungsi ini diimplementasikan menggunakan kompilator intrinsik jika memungkinkan. Untuk informasi selengkapnya, lihat file header WinBase.h dan _InterlockedExchangeAdd

Fungsi ini menghasilkan hambatan memori penuh (atau pagar) untuk memastikan bahwa operasi memori selesai secara berurutan.

Sistem berbasis itanium: Untuk aplikasi kritis performa, gunakan InterlockedExchangeAddAcquire sebagai gantinya.

Catatan Fungsi ini didukung pada sistem berbasis Windows RT.
 

Persyaratan

   
Klien minimum yang didukung Windows XP [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2003 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header winnt.h (sertakan Windows.h)
Pustaka Kernel32.lib
DLL Kernel32.dll

Lihat juga

Akses Variabel Yang Saling Diblokir

InterlockedCompareExchange

InterlockedExchange

InterlockedExchangeAdd64

InterlockedExchangeAddAcquire

InterlockedExchangeAddAcquire64

InterlockedExchangeAddNoFence

InterlockedExchangeAddNoFence64

InterlockedExchangeAddRelease

InterlockedExchangeAddRelease64

InterlockedExchangeSubtract

Fungsi Sinkronisasi