Fungsi InterlockedExchangePointer (winnt.h)

Secara atomik bertukar sepasang alamat.

Sintaks

PVOID InterlockedExchangePointer(
  [in, out] PVOID volatile *Target,
  [in]      PVOID          Value
);

Parameter

[in, out] Target

Penunjuk ke alamat untuk ditukar. Fungsi ini mengatur alamat yang ditujukan oleh parameter Target (*Target) ke alamat yang merupakan nilai parameter Nilai , dan mengembalikan nilai sebelumnya dari parameter Target .

[in] Value

Alamat yang akan ditukar dengan alamat yang ditujukan oleh parameter Target (*Target).

Nilai kembali

Fungsi mengembalikan alamat awal yang ditujukan oleh parameter Target .

Keterangan

Fungsi ini menyalin alamat yang diteruskan sebagai parameter kedua ke yang pertama dan mengembalikan alamat asli yang pertama.

Pada sistem 64-bit, parameternya adalah 64 bit dan parameter Target harus diselaraskan pada batas 64-bit; jika tidak, fungsi akan ber perilaku tak terduga. Pada sistem 32-bit, parameternya adalah 32 bit dan parameter Target harus diselaraskan pada batas 32-bit.

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

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

Sistem berbasis itanium: Untuk aplikasi kritis performa, gunakan InterlockedExchangePointerAcquire 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)

Lihat juga

Akses Variabel Yang Saling Diblokir

InterlockedCompareExchange

InterlockedExchange

InterlockedExchange16

InterlockedExchange16Acquire

InterlockedExchange16NoFence

InterlockedExchange64

InterlockedExchange8

InterlockedExchangeAcquire

InterlockedExchangeAcquire64

InterlockedExchangeAdd

InterlockedExchangeNoFence

InterlockedExchangeNoFence64

InterlockedExchangePointerAcquire

InterlockedExchangePointerNoFence

InterlockedExchangeSubtract

Fungsi Sinkronisasi