_InterlockedExchange vnitřní funkce
Specifické pro Microsoft
Generuje atomické pokyn k nastavení zadanou hodnotu.
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
[ve out] Target
Ukazatel na hodnotu, která vyměnit.Funkce Tato proměnná nastavena Value a vrátí jeho předchozí hodnotu.[in] Value
Hodnota, která má vyměnit s hodnotou na kterou odkazuje Target.
Vrácená hodnota
Vrátí počáteční hodnotu, na kterou odkazuje Target.
Požadavky
Vnitřní |
Architektura |
Záhlaví |
---|---|---|
_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 > |
Poznámky
_InterlockedExchange poskytuje podporu kompilátoru vnitřní rozhraní Win32 Windows SDK InterlockedExchange funkce.
Existuje několik variant na _InterlockedExchange který lišit v závislosti na datové typy, zahrnují a zda získat specifické procesory nebo slouží k uvolnění sémantiku.
Při _InterlockedExchange funkce se používá pro 32bitové celočíselné hodnoty _InterlockedExchange8 8-bit celočíselné hodnoty, bude pracovat _InterlockedExchange16 pracuje na 16bitové celočíselné hodnoty, a _InterlockedExchange64 pracuje na 64bitové celočíselné hodnoty.
Na platformách ARM, použijte vnitřní objekty s _acq a _rel přípony pro získání a verze sémantiku, například na začátku a na konci kritické sekce.Vnitřní objekty s _nf příponu ("žádné ohraničení") není fungovat jako překážku paměti.
Na platformách Intel, které podporují hardwaru uzamčení Elision (HLE) pokyny, vnitřní objekty s _HLEAcquire a _HLERelease přípony zahrnout nápovědu pro procesor, který mohou urychlit výkonu tím, že eliminuje krok zápisu uzamčení hardwaru.Pokud tyto vnitřní objekty se nazývají na platformách, které nepodporují HLE, je pokyn ignorován.
Tyto rutiny jsou pouze k dispozici jako vnitřní objekty.
Příklad
Příklad použití _InterlockedExchange, naleznete v části _InterlockedDecrement.