_InterlockedExchangeAdd fungsi intrinsik
Khusus Microsoft
Berikan dukungan intrinsik kompilator untuk fungsi intrinsik Win32 Windows SDK _InterlockedExchangeAdd.
Sintaks
long _InterlockedExchangeAdd(
long volatile * Addend,
long Value
);
long _InterlockedExchangeAdd_acq(
long volatile * Addend,
long Value
);
long _InterlockedExchangeAdd_rel(
long volatile * Addend,
long Value
);
long _InterlockedExchangeAdd_nf(
long volatile * Addend,
long Value
);
long _InterlockedExchangeAdd_HLEAcquire(
long volatile * Addend,
long Value
);
long _InterlockedExchangeAdd_HLERelease(
long volatile * Addend,
long Value
);
char _InterlockedExchangeAdd8(
char volatile * Addend,
char Value
);
char _InterlockedExchangeAdd8_acq(
char volatile * Addend,
char Value
);
char _InterlockedExchangeAdd8_rel(
char volatile * Addend,
char Value
);
char _InterlockedExchangeAdd8_nf(
char volatile * Addend,
char Value
);
short _InterlockedExchangeAdd16(
short volatile * Addend,
short Value
);
short _InterlockedExchangeAdd16_acq(
short volatile * Addend,
short Value
);
short _InterlockedExchangeAdd16_rel(
short volatile * Addend,
short Value
);
short _InterlockedExchangeAdd16_nf(
short volatile * Addend,
short Value
);
__int64 _InterlockedExchangeAdd64(
__int64 volatile * Addend,
__int64 Value
);
__int64 _InterlockedExchangeAdd64_acq(
__int64 volatile * Addend,
__int64 Value
);
__int64 _InterlockedExchangeAdd64_rel(
__int64 volatile * Addend,
__int64 Value
);
__int64 _InterlockedExchangeAdd64_nf(
__int64 volatile * Addend,
__int64 Value
);
__int64 _InterlockedExchangeAdd64_HLEAcquire(
__int64 volatile * Addend,
__int64 Value
);
__int64 _InterlockedExchangeAdd64_HLERelease(
__int64 volatile * Addend,
__int64 Value
);
Parameter
Tambahkan
[masuk, keluar] Nilai yang akan ditambahkan ke; diganti dengan hasil penambahan.
Nilai
[di] Nilai yang akan ditambahkan.
Nilai hasil
Nilai yang dikembalikan adalah nilai awal variabel yang ditujukkan oleh Addend
parameter .
Persyaratan
Intrinsik | Sistem | Header |
---|---|---|
_InterlockedExchangeAdd , , _InterlockedExchangeAdd8 _InterlockedExchangeAdd16 |
x86, ARM, x64, ARM64 | <intrin.h> |
_InterlockedExchangeAdd64 |
ARM, x64, ARM64 | <intrin.h> |
_InterlockedExchangeAdd_acq , , _InterlockedExchangeAdd_nf _InterlockedExchangeAdd_rel , _InterlockedExchangeAdd8_acq , _InterlockedExchangeAdd8_rel , _InterlockedExchangeAdd8_nf , _InterlockedExchangeAdd16_acq , _InterlockedExchangeAdd16_rel , _InterlockedExchangeAdd16_nf , , _InterlockedExchangeAdd64_acq , , _InterlockedExchangeAdd64_rel _InterlockedExchangeAdd64_nf |
ARM, ARM64 | <intrin.h> |
_InterlockedExchangeAdd_HLEAcquire , _InterlockedExchangeAdd_HLERelease |
x86, x64 | <immintrin.h> |
_InterlockedExchangeAdd64_HLEAcquire , _InterlockedExchangeAdd64_HLErelease |
x64 | <immintrin.h> |
Keterangan
Ada beberapa variasi pada _InterlockedExchangeAdd
yang bervariasi berdasarkan jenis data yang mereka libatkan dan apakah semantik peroleh atau rilis khusus prosesor digunakan.
_InterlockedExchangeAdd
Sementara fungsi beroperasi pada nilai bilangan bulat 32-bit, _InterlockedExchangeAdd8
beroperasi pada nilai bilangan bulat 8-bit, _InterlockedExchangeAdd16
beroperasi pada nilai bilangan bulat 16-bit, dan _InterlockedExchangeAdd64
beroperasi pada nilai bilangan bulat 64-bit.
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 _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. Mereka intrinsik bahkan ketika /Oi atau #pragma intrinsik digunakan. Tidak dimungkinkan untuk menggunakan fungsi #pragma pada intrinsik ini.
Contoh
Untuk sampel cara menggunakan _InterlockedExchangeAdd
, lihat _InterlockedDecrement.
END Khusus Microsoft
Lihat juga
Intrinsik pengkompilasi
Kata kunci
Konflik dengan Pengkompilasi x86