_InterlockedExchange funkcje wewnętrzne
Specyficzne dla firmy Microsoft
Generuje instrukcję częściowych można ustawić określoną wartość.
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
);
Parametry
[w, out] Target
Wskaźnik do wartości wymianę.Funkcja ustawia dla tej zmiennej Value i zwraca jego uprzedniego wartość.[w] Value
Wartość wymianę z wartością wskazywany przez Target.
Wartość zwracana
Zwraca wartość początkowa wskazywany przez Target.
Wymagania
Wewnętrzne |
Architektura |
nagłówek |
---|---|---|
_InterlockedExchange, _InterlockedExchange8, _InterlockedExchange16, _InterlockedExchange64 |
x 86, ARM, x64 |
< 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 |
< intrin.h > |
_InterlockedExchange_HLEAcquire, _InterlockedExchange_HLERelease, _InterlockedExchange64_HLEAcquire, _InterlockedExchange64_HLERelease |
x86, x64 |
< immintrin.h > |
Uwagi
_InterlockedExchange zapewnia obsługę wewnętrznych kompilatora dla Win32 Windows SDK InterlockedExchange funkcji.
Istnieje kilka zmian w _InterlockedExchange które zależą od typów danych obejmują i czy licencje specyficzny dla procesora lub wersji semantyki jest używany.
Podczas _InterlockedExchange funkcja działa na 32-bitowych liczb całkowitych, _InterlockedExchange8 8-bitowych liczb całkowitych, będzie używał _InterlockedExchange16 16-bitowych liczb całkowitych, będzie używał i _InterlockedExchange64 działa w 64-bitowych wartości całkowitych.
Na platformach ARM, użyj intrinsics z _acq i _rel sufiksy dla semantyki pobierania i wersji, takich jak na początku i na końcu sekcji krytycznych.Intrinsics z _nf sufiks ("nie ogrodzenia") nie działają jako barierę pamięci.
Na platformach Intel, obsługujące instrukcje sprzętu blokady Elision (HLE), intrinsics z _HLEAcquire i _HLERelease sufiksy uwzględnić wskazówkę procesora, który może przyspieszyć wydajności eliminując blokady zapisu w danym kroku sprzętu.Jeśli te intrinsics są wywoływane na platformach, które nie obsługują HLE, wskazówka jest ignorowana.
Procedury te są dostępne tylko jako intrinsics.
Przykład
Przykładowe sposób użycia _InterlockedExchange, zobacz _InterlockedDecrement.