Udostępnij za pośrednictwem


_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.

Zobacz też

Informacje

Funkcje wewnętrzne kompilatora

Słowa kluczowe języka C++

Konflikty z kompilator x 86