Bagikan melalui


_InterlockedCompareExchangePointer fungsi intrinsik

Khusus Microsoft

Melakukan operasi atomik yang menyimpan Exchange alamat di Destination alamat jika Comparand alamat dan Destination sama.

Sintaks

void * _InterlockedCompareExchangePointer (
   void * volatile * Destination,
   void * Exchange,
   void * Comparand
);
void * _InterlockedCompareExchangePointer_acq (
   void * volatile * Destination,
   void * Exchange,
   void * Comparand
);
void * _InterlockedCompareExchangePointer_HLEAcquire (
   void * volatile * Destination,
   void * Exchange,
   void * Comparand
);
void * _InterlockedCompareExchangePointer_HLERelease (
   void * volatile * Destination,
   void * Exchange,
   void * Comparand
);
void * _InterlockedCompareExchangePointer_nf (
   void * volatile * Destination,
   void * Exchange,
   void * Comparand
);
void * _InterlockedCompareExchangePointer_np (
   void * volatile * Destination,
   void * Exchange,
   void * Comparand
);
void * _InterlockedCompareExchangePointer_rel (
   void * volatile * Destination,
   void * Exchange,
   void * Comparand
);

Parameter

Tujuan
[masuk, keluar] Penunjuk ke penunjuk ke nilai tujuan. Tanda diabaikan.

Exchange
[di] Penunjuk pertukaran. Tanda diabaikan.

Comparand
[di] Penunjuk untuk dibandingkan dengan tujuan. Tanda diabaikan.

Nilai hasil

Nilai yang dikembalikan adalah nilai awal tujuan.

Persyaratan

Intrinsik Sistem Header
_InterlockedCompareExchangePointer x86, ARM, x64, ARM64 <intrin.h>
_InterlockedCompareExchangePointer_acq, , _InterlockedCompareExchangePointer_nf_InterlockedCompareExchangePointer_rel ARM, ARM64 <iiintrin.h>
_InterlockedCompareExchangePointer_HLEAcquire, _InterlockedCompareExchangePointer_HLERelease x86, x64 <immintrin.h>

Keterangan

_InterlockedCompareExchangePointer melakukan perbandingan Destination atom alamat dengan Comparand alamat. Destination Jika alamat sama dengan Comparand alamat, Exchange alamat disimpan dalam alamat yang ditentukan oleh Destination. Jika tidak, tidak ada operasi yang dilakukan.

_InterlockedCompareExchangePointer menyediakan dukungan intrinsik kompilator untuk fungsi Win32 Windows SDK InterlockedCompareExchangePointer .

Untuk contoh cara menggunakan _InterlockedCompareExchangePointer, lihat _InterlockedDecrement.

Pada platform ARM, gunakan intrinsik dengan _acq akhiran dan _rel jika Anda perlu memperoleh dan melepaskan semantik, seperti di awal dan akhir bagian penting. Intrinsik ARM dengan _nf akhiran ("tanpa pagar") tidak bertindak sebagai pengralang memori.

Intrinsik dengan _np akhiran ("tidak ada prefetch") mencegah kemungkinan operasi prefetch dimasukkan oleh pengkompilasi.

Pada platform Intel yang mendukung instruksi Hardware Lock Elision (HLE), intrinsik dengan _HLEAcquire akhiran dan _HLERelease menyertakan petunjuk ke prosesor yang dapat mempercepat performa dengan menghilangkan langkah tulis kunci di perangkat keras. Jika intrinsik ini dipanggil pada platform yang tidak mendukung HLE, petunjuk diabaikan.

Rutinitas ini hanya tersedia sebagai intrinsik.

END Khusus Microsoft

Lihat juga

Intrinsik pengkompilasi
Kata kunci