Bagikan melalui


_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 Arsitektur 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

Baca juga

Intrinsik pengkompilasi
Konflik dengan Pengkompilasi x86