Fungsi InterlockedCompareExchange (wdm.h)

Rutinitas InterlockedCompareExchange melakukan operasi atomik yang membandingkan nilai input yang ditunjukkan oleh Tujuan dengan nilai Comperand.

Sintaks

LONG CDECL_NON_WVMPURE InterlockedCompareExchange(
  [in, out] LONG volatile *Destination,
  [in]      LONG          ExChange,
  [in]      LONG          Comperand
);

Parameter

[in, out] Destination

Penunjuk ke nilai input yang dibandingkan dengan nilai Comperand.

[in] ExChange

Menentukan nilai output yang ditunjukkan oleh Tujuan jika nilai input yang ditunjukkan oleh Tujuan sama dengan nilai Comperand.

[in] Comperand

Menentukan nilai yang dibandingkan dengan nilai input yang ditujukkan oleh Tujuan.

Mengembalikan nilai

InterlockedCompareExchange mengembalikan nilai asli *Tujuan.

Keterangan

Jika Comperand sama dengan *Tujuan, maka *Tujuan diatur ke Exchange yang sama. Jika tidak, *Tujuan tidak berubah.

InterlockedCompareExchange menyediakan cara atom yang cepat untuk menyinkronkan pengujian dan pembaruan variabel yang dibagikan oleh beberapa utas. Jika nilai input yang ditunjukkan oleh Tujuan sama dengan nilai Comperand, nilai output Tujuan diatur ke nilai Exchange.

InterlockedCompareExchange dirancang untuk kecepatan dan, biasanya, diimplementasikan sebaris oleh kompilator. InterlockedCompareExchange hanya bersifat atomik sehubungan dengan panggilan Xxx yang diblokir lainnya. Ini tidak menggunakan kunci putar dan dapat digunakan dengan aman pada data yang dapat di-pageable.

Operasi yang saling dikunci tidak dapat digunakan pada memori yang tidak di-cache.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia dimulai dengan Windows 2000.
Target Platform Universal
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h, Miniport.h)
Pustaka OneCoreUAP.lib di Windows 10
IRQL Tingkat apa pun

Lihat juga

ExInterlockedCompareExchange64

InterlockedCompareExchangePointer

InterlockedDecrement

InterlockedExchange

InterlockedExchangePointer

InterlockedIncrement