Bagikan melalui


Fungsi InterlockedExchange (winnt.h)

Mengatur variabel 32-bit ke nilai yang ditentukan sebagai operasi atomik.

Untuk beroperasi pada variabel pointer, gunakan fungsi InterlockedExchangePointer .

Untuk beroperasi pada variabel 16-bit, gunakan fungsi InterlockedExchange16 .

Untuk beroperasi pada variabel 64-bit, gunakan fungsi InterlockedExchange64 .

Sintaks

LONG InterlockedExchange(
  [in, out] LONG volatile *Target,
  [in]      LONG          Value
);

Parameter

[in, out] Target

Penunjuk ke nilai yang akan ditukar. Fungsi mengatur variabel ini ke Nilai, dan mengembalikan nilai sebelumnya.

[in] Value

Nilai yang akan ditukar dengan nilai yang ditujukkan oleh Target.

Nilai kembali

Fungsi mengembalikan nilai awal parameter Target .

Keterangan

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 _InterlockedExchange.

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

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

Catatan Fungsi ini didukung pada sistem berbasis Windows RT.
 

Persyaratan

Persyaratan Nilai
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

InterlockedExchange16

InterlockedExchange16Acquire

InterlockedExchange16NoFence

InterlockedExchange64

InterlockedExchange8

InterlockedExchangeAcquire

InterlockedExchangeAcquire64

InterlockedExchangeAdd

InterlockedExchangeAdd64

InterlockedExchangeAddAcquire

InterlockedExchangeAddAcquire64

InterlockedExchangeAddNoFence

InterlockedExchangeAddNoFence64

InterlockedExchangeAddRelease

InterlockedExchangeAddRelease64

InterlockedExchangeNoFence

InterlockedExchangeNoFence64

InterlockedExchangePointer

InterlockedExchangePointerAcquire

InterlockedExchangePointerNoFence

InterlockedExchangeSubtract

Fungsi Sinkronisasi