Bagikan melalui


_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