Fungsi InterlockedCompareExchange (winnt.h)
Melakukan operasi perbandingan dan pertukaran atomik pada nilai yang ditentukan. Fungsi ini membandingkan dua nilai dan pertukaran 32-bit yang ditentukan dengan nilai 32-bit lainnya berdasarkan hasil perbandingan.
Jika Anda bertukar nilai penunjuk, fungsi ini telah digantikan oleh fungsi InterlockedCompareExchangePointer .
Untuk beroperasi pada nilai 64-bit, gunakan fungsi InterlockedCompareExchange64 .
Sintaks
LONG InterlockedCompareExchange(
[in, out] LONG volatile *Destination,
[in] LONG ExChange,
[in] LONG Comperand
);
Parameter
[in, out] Destination
Penunjuk ke nilai tujuan.
[in] ExChange
Nilai pertukaran.
[in] Comperand
Nilai untuk dibandingkan dengan Tujuan.
Menampilkan nilai
Fungsi mengembalikan nilai awal parameter Tujuan .
Keterangan
Fungsi membandingkan nilai Tujuan dengan nilai Comparand . Jika nilai Tujuan sama dengan nilai Comparand , nilai Exchange disimpan dalam alamat yang ditentukan oleh Tujuan. Jika tidak, tidak ada operasi yang dilakukan.
Parameter untuk fungsi ini harus diselaraskan pada batas 32-bit; jika tidak, fungsi akan bertingkah tidak terduga pada sistem x86 multiprosedur dan sistem non-x86 apa pun. malloc, calloc, HeapAlloc, dan HeapReAlloc menyediakan memori yang cukup selaras.
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 _InterlockedCompareExchange.
Fungsi ini menghasilkan hambatan memori penuh (atau pagar) untuk memastikan bahwa operasi memori selesai secara berurutan.
Sistem berbasis Itanium: Untuk aplikasi penting performa, gunakan InterlockedCompareExchangeAcquire atau InterlockedCompareExchangeRelease sebagai gantinya.
Persyaratan
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 (termasuk Windows.h) |
Pustaka | Kernel32.lib |
DLL | Kernel32.dll |
Lihat juga
Akses Variabel Yang Saling Diblokir
InterlockedCompare64Exchange128
InterlockedCompareExchange16Acquire
InterlockedCompareExchange16NoFence
InterlockedCompareExchange16Release
InterlockedCompareExchangeAcquire
InterlockedCompareExchangeAcquire64
InterlockedCompareExchangeNoFence
InterlockedCompareExchangeNoFence64
InterlockedCompareExchangePointer
InterlockedCompareExchangePointerAcquire
InterlockedCompareExchangePointerNoFence
InterlockedCompareExchangePointerRelease
InterlockedCompareExchangeRelease
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk