İç 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 Target
değerle değiştirilecek değer.
Dönüş değeri
tarafından Target
iş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