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