_InterlockedExchange fungsi intrinsik
Khusus Microsoft
Menghasilkan instruksi atom untuk menetapkan nilai tertentu.
Sintaks
long _InterlockedExchange(
long volatile * Target,
long Value
);
long _InterlockedExchange_acq(
long volatile * Target,
long Value
);
long _InterlockedExchange_HLEAcquire(
long volatile * Target,
long Value
);
long _InterlockedExchange_HLERelease(
long volatile * Target,
long Value
);
long _InterlockedExchange_nf(
long volatile * Target,
long Value
);
long _InterlockedExchange_rel(
long volatile * Target,
long Value
);
char _InterlockedExchange8(
char volatile * Target,
char Value
);
char _InterlockedExchange8_acq(
char volatile * Target,
char Value
);
char _InterlockedExchange8_nf(
char volatile * Target,
char Value
);
char _InterlockedExchange8_rel(
char volatile * Target,
char Value
);
short _InterlockedExchange16(
short volatile * Target,
short Value
);
short _InterlockedExchange16_acq(
short volatile * Target,
short Value
);
short _InterlockedExchange16_nf(
short volatile * Target,
short Value
);
short _InterlockedExchange16_rel(
short volatile * Target,
short Value
);
__int64 _InterlockedExchange64(
__int64 volatile * Target,
__int64 Value
);
__int64 _InterlockedExchange64_acq(
__int64 volatile * Target,
__int64 Value
);
__int64 _InterlockedExchange64_HLEAcquire(
__int64 volatile * Target,
__int64 Value
);
__int64 _InterlockedExchange64_HLERelease(
__int64 volatile * Target,
__int64 Value
);
__int64 _InterlockedExchange64_nf(
__int64 volatile * Target,
__int64 Value
);
__int64 _InterlockedExchange64_rel(
__int64 volatile * Target,
__int64 Value
);
Parameter
Target
[masuk, keluar] Penunjuk ke nilai yang akan ditukar. Fungsi mengatur variabel ini ke Value
dan mengembalikan nilai sebelumnya.
Nilai
[di] Nilai yang akan ditukar dengan nilai yang ditujukkan oleh Target
.
Nilai hasil
Mengembalikan nilai awal yang ditujukkan ke .Target
Persyaratan
Intrinsik | Sistem | Header |
---|---|---|
_InterlockedExchange , , _InterlockedExchange8 _InterlockedExchange16 |
x86, ARM, x64, ARM64 | <intrin.h> |
_InterlockedExchange64 |
ARM, x64, ARM64 | <intrin.h> |
_InterlockedExchange_acq , , _InterlockedExchange_nf _InterlockedExchange_rel , _InterlockedExchange8_acq , _InterlockedExchange8_nf , _InterlockedExchange8_rel , _InterlockedExchange16_acq , _InterlockedExchange16_nf , _InterlockedExchange16_rel , _InterlockedExchange64_acq , , _InterlockedExchange64_nf , , _InterlockedExchange64_rel |
ARM, ARM64 | <intrin.h> |
_InterlockedExchange_HLEAcquire , _InterlockedExchange_HLERelease |
x86, x64 | <immintrin.h> |
_InterlockedExchange64_HLEAcquire , _InterlockedExchange64_HLERelease |
x64 | <immintrin.h> |
Keterangan
_InterlockedExchange
menyediakan dukungan intrinsik kompilator untuk fungsi Win32 Windows SDK InterlockedExchange .
Ada beberapa variasi pada _InterlockedExchange
yang bervariasi berdasarkan jenis data yang mereka libatkan dan apakah semantik peroleh atau rilis khusus prosesor digunakan.
_InterlockedExchange
Sementara fungsi beroperasi pada nilai bilangan bulat 32-bit, _InterlockedExchange8
beroperasi pada nilai bilangan bulat 8-bit, _InterlockedExchange16
beroperasi pada nilai bilangan bulat 16-bit, dan _InterlockedExchange64
beroperasi pada nilai bilangan bulat 64-bit.
Pada platform ARM, gunakan intrinsik dengan _acq
akhiran dan _rel
untuk memperoleh dan melepaskan semantik, seperti di awal dan akhir bagian penting. Intrinsik dengan _nf
akhiran ("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.
Contoh
Untuk sampel cara menggunakan _InterlockedExchange
, lihat _InterlockedDecrement.
END Khusus Microsoft
Lihat juga
Intrinsik pengkompilasi
Kata kunci
Konflik dengan Pengkompilasi x86