_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