Bagikan melalui


Fungsi InterlockedExchangeAdd64 (winnt.h)

Melakukan penambahan atomik dari dua nilai 64-bit.

Untuk beroperasi pada nilai 32-bit, gunakan fungsi InterlockedExchangeAdd .

Sintaks

LONG64 InterlockedExchangeAdd64(
  [in, out] LONG64 volatile *Addend,
  [in]      LONG64          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 .

Nilai kembali

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 ditujukkan oleh Addend.

Variabel untuk fungsi ini harus diselaraskan pada batas 64-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 terhubung 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 _InterlockedExchangeAdd64.

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

Sistem berbasis Itanium: Untuk aplikasi penting performa, gunakan InterlockedExchangeAddAcquire64 sebagai gantinya.

Catatan Fungsi ini didukung pada sistem berbasis Windows RT.
 

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2003 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header winnt.h (termasuk Windows.h)

Lihat juga

Akses Variabel Yang Saling Diblokir

InterlockedCompareExchange

InterlockedExchange

InterlockedExchangeAdd

InterlockedExchangeAddAcquire

InterlockedExchangeAddAcquire64

InterlockedExchangeAddNoFence

InterlockedExchangeAddNoFence64

InterlockedExchangeAddRelease

InterlockedExchangeAddRelease64

InterlockedExchangeSubtract

Fungsi Sinkronisasi