Bagikan melalui


_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