_InterlockedExchangePointer fungsi intrinsik
Khusus Microsoft
Melakukan operasi pertukaran atomik, yang menyalin alamat yang diteruskan sebagai argumen kedua ke dalam argumen pertama, dan mengembalikan alamat asli yang pertama.
Sintaks
void * _InterlockedExchangePointer(
void * volatile * Target,
void * Value
);
void * _InterlockedExchangePointer_acq(
void * volatile * Target,
void * Value
);
void * _InterlockedExchangePointer_rel(
void * volatile * Target,
void * Value
);
void * _InterlockedExchangePointer_nf(
void * volatile * Target,
void * Value
);
void * _InterlockedExchangePointer_HLEAcquire(
void * volatile * Target,
void * Value
);
void * _InterlockedExchangePointer_HLERelease(
void * volatile * Target,
void * Value
);
Parameter
Target
[masuk, keluar] Arahkan ke penunjuk ke nilai yang akan ditukar. Fungsi mengatur nilai ke Nilai dan mengembalikan nilai sebelumnya.
Nilai
[di] Nilai yang akan ditukar dengan nilai yang ditujukkan oleh Target.
Nilai hasil
Fungsi mengembalikan nilai awal yang ditujukkan oleh Target.
Persyaratan
Intrinsik | Sistem | Header |
---|---|---|
_InterlockedExchangePointer |
x86, ARM, x64, ARM64 | <intrin.h> |
_InterlockedExchangePointer_acq , , _InterlockedExchangePointer_rel _InterlockedExchangePointer_nf |
ARM, ARM64 | <intrin.h> |
_InterlockedExchangePointer_HLEAcquire , _InterlockedExchangePointer_HLERelease |
x64 | <immintrin.h> |
Pada arsitektur x86, _InterlockedExchangePointer
adalah makro yang memanggil _InterlockedExchange
.
Keterangan
Pada sistem 64-bit, parameternya adalah 64 bit dan harus diselaraskan pada batas 64-bit. Jika tidak, fungsi gagal. Pada sistem 32-bit, parameternya adalah 32 bit dan harus diselaraskan pada batas 32-bit. Untuk informasi selengkapnya, lihat meratakan.
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 dengan akhiran _nf
("tanpa pagar") tidak bertindak sebagai pengralang memori.
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