Fungsi InterlockedExchangePointer (winnt.h)

Secara atomik bertukar sepasang alamat.

Sintaksis

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

Parameter

[in, out] Target

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

[in] Value

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

Mengembalikan nilai

Fungsi mengembalikan alamat awal yang ditujukkan oleh parameter Target .

Komentar

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 bertingkah tidak terduga. Pada sistem 32-bit, parameternya adalah 32 bit dan parameter Target harus diselaraskan pada batas 32-bit.

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

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 penting performa, gunakan InterlockedExchangePointerAcquire.

Catatan Fungsi ini didukung pada sistem berbasis Windows RT.
 

Persyaratan

Syarat Nilai
klien minimum yang didukung Windows XP [aplikasi desktop | Aplikasi UWP]
server minimum yang didukung Windows Server 2003 [aplikasi desktop | Aplikasi UWP]
Platform Target Windows
Header winnt.h (termasuk 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