Aracılığıyla paylaş


İç işlevleri _InterlockedExchange

Microsoft'a Özgü

Belirtilen değeri ayarlamak için atomik yönerge oluşturur.

Sözdizimi

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
);

Parametreler

Hedef
[in, out] Değiştirilecek değerin işaretçisi. işlevi bu değişkeni olarak Value ayarlar ve önceki değerini döndürür.

Value
[in] ile işaret edilen Targetdeğerle değiştirilecek değer.

Dönüş değeri

tarafından Targetişaret edilen ilk değeri döndürür.

Gereksinimler

Içsel Mimari Üst bilgi
_InterlockedExchange, _InterlockedExchange8, _InterlockedExchange16 x86, ARM, x64, ARM64 <intrin.h>
_InterlockedExchange64 ARM, x64, ARM64 <intrin.h>
_InterlockedExchange_acq, , _InterlockedExchange_rel, , _InterlockedExchange8_acq, _InterlockedExchange8_nf, _InterlockedExchange8_rel, , _InterlockedExchange16_acq, _InterlockedExchange16_nf, _InterlockedExchange64_acq_InterlockedExchange16_rel, _InterlockedExchange64_rel_InterlockedExchange64_nf, _InterlockedExchange_nf ARM, ARM64 <intrin.h>
_InterlockedExchange_HLEAcquire, _InterlockedExchange_HLERelease x86, x64 <immintrin.h>
_InterlockedExchange64_HLEAcquire, _InterlockedExchange64_HLERelease x64 <immintrin.h>

Açıklamalar

_InterlockedExchange Win32 Windows SDK InterlockedExchange işlevi için derleyici iç desteği sağlar.

İçerdikleri veri türlerine ve işlemciye özgü alma veya yayın semantiği kullanılıp kullanılmadığına bağlı olarak değişen çeşitli varyasyonlar _InterlockedExchange vardır.

_InterlockedExchange İşlev 32 bit tamsayı değerleri üzerinde çalışırken, _InterlockedExchange8 8 bit tamsayı değerlerinde_InterlockedExchange16, 16 bit tamsayı değerlerinde ve _InterlockedExchange64 64 bit tamsayı değerlerinde çalışır.

ARM platformlarında, kritik bir bölümün başında ve _rel sonunda olduğu gibi alma ve yayın semantiği için iç _acq bilgileri ve soneklerini kullanın. ("Çit yok") soneki olan _nf iç bileşenler bir bellek engeli görevi görmez.

Donanım Kilidi Elision (HLE) yönergelerini destekleyen Intel platformlarında, ve _HLERelease sonekleri ile _HLEAcquire iç bilgiler, donanımda kilit yazma adımını ortadan kaldırarak performansı hızlandırabilecek işlemciye yönelik bir ipucu içerir. Bu iç öğeler HLE'yi desteklemeyen platformlarda çağrılırsa, ipucu yoksayılır.

Bu yordamlar yalnızca iç yordamlar olarak kullanılabilir.

Örnek

kullanma _InterlockedExchangeörneği için bkz . _InterlockedDecrement.

END Microsoft'a Özgü

Ayrıca bkz.

Derleyici iç bilgileri
Anahtar Sözcükler
x86 Derleyicisi ile Çakışma