Bagikan melalui


Fungsi InterlockedCompareExchange128 (winnt.h)

Melakukan operasi perbandingan dan pertukaran atomik pada nilai yang ditentukan. Fungsi ini membandingkan dua nilai dan pertukaran 128-bit yang ditentukan dengan nilai 128-bit lainnya berdasarkan hasil perbandingan.

Untuk beroperasi pada nilai 16-bit, gunakan fungsi InterlockedCompareExchange16 .

Untuk beroperasi pada nilai 32-bit, gunakan fungsi InterlockedCompareExchange .

Untuk beroperasi pada nilai 64-bit, gunakan fungsi InterlockedCompareExchange64 .

Sintaks

BOOLEAN InterlockedCompareExchange128(
  [in, out] LONG64 volatile *Destination,
  [in]      LONG64          ExchangeHigh,
  [in]      LONG64          ExchangeLow,
  [in, out] LONG64          *ComparandResult
);

Parameter

[in, out] Destination

Penunjuk ke nilai tujuan. Parameter ini adalah array dari dua bilangan bulat 64-bit yang dianggap sebagai bidang 128-bit.

[in] ExchangeHigh

Bagian tinggi dari nilai pertukaran.

[in] ExchangeLow

Bagian rendah dari nilai pertukaran.

[in, out] ComparandResult

Nilai untuk dibandingkan dengan. Parameter ini adalah array dari dua bilangan bulat 64-bit yang dianggap sebagai bidang 128-bit. Pada output, ini ditimpa dengan nilai asli tujuan.

Nilai kembali

Fungsi mengembalikan 1 jika ComparandResult sama dengan nilai asli parameter Tujuan , atau 0 jika ComparandResult tidak sama dengan nilai asli parameter Tujuan .

Keterangan

Fungsi membandingkan nilai Tujuan dengan nilai ComparandResult :

  • Jika nilai Tujuan sama dengan nilai ComparandResult , nilai ExchangeHigh dan ExchangeLow disimpan dalam array yang ditentukan oleh Tujuan, dan juga dalam array yang ditentukan oleh ComparandResult.
  • Jika tidak, Tujuan dibiarkan tidak dimodifikasi.
Terlepas dari hasil perbandingan, nilai Tujuan asli disimpan dalam array yang ditentukan oleh ComparandResult.

Parameter untuk fungsi ini harus diselaraskan pada batas 16-byte; jika tidak, fungsi akan ber perilaku tidak terduga pada sistem x64. Lihat _aligned_malloc.

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 hanya tersedia pada sistem berbasis x64, dan diimplementasikan menggunakan intrinsik pengkompilasi. Untuk informasi selengkapnya, lihat file header WinBase.h dan _InterlockedCompareExchange128.

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

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 8 [khusus aplikasi desktop]
Server minimum yang didukung Windows Server 2012 [hanya aplikasi desktop]
Target Platform Windows
Header winnt.h (sertakan Windows.h)

Lihat juga

Akses Variabel Yang Saling Diblokir

InterlockedCompare64Exchange128

InterlockedCompareExchange

InterlockedCompareExchange16

InterlockedCompareExchange16Acquire

InterlockedCompareExchange16NoFence

InterlockedCompareExchange16Release

InterlockedCompareExchange64

InterlockedCompareExchangeAcquire

InterlockedCompareExchangeAcquire64

InterlockedCompareExchangeNoFence

InterlockedCompareExchangeNoFence64

InterlockedCompareExchangePointer

InterlockedCompareExchangePointerAcquire

InterlockedCompareExchangePointerNoFence

InterlockedCompareExchangePointerRelease

InterlockedCompareExchangeRelease

InterlockedCompareExchangeRelease64

Fungsi Sinkronisasi