Sdílet prostřednictvím


vnitřní funkce _InterlockedExchangePointer

Specifické pro Microsoft

Provede operaci atomické výměny, která zkopíruje adresu předanou jako druhý argument do prvního argumentu a vrátí původní adresu první.

Syntaxe

void * _InterlockedExchangePointer(
   void * volatile * Target,
   void * Value
);
void * _InterlockedExchangePointer_acq(
   void * volatile * Target,
   void * Value
);
void * _InterlockedExchangePointer_rel(
   void * volatile * Target,
   void * Value
);
void * _InterlockedExchangePointer_nf(
   void * volatile * Target,
   void * Value
);
void * _InterlockedExchangePointer_HLEAcquire(
   void * volatile * Target,
   void * Value
);
void * _InterlockedExchangePointer_HLERelease(
   void * volatile * Target,
   void * Value
);

Parametry

Cíl
[in, out] Ukazatel na ukazatel na hodnotu, kterou chcete vyměnit. Funkce nastaví hodnotu na Hodnotu a vrátí její předchozí hodnotu.

Hodnota
[v] Hodnota, která má být vyměněná s hodnotou, na kterou odkazuje cíl.

Vrácená hodnota

Funkce vrátí počáteční hodnotu, na kterou odkazuje target.

Požadavky

Vnitřní Architektura Záhlaví
_InterlockedExchangePointer x86, ARM, x64, ARM64 <intrin.h>
_InterlockedExchangePointer_acq, _InterlockedExchangePointer_rel, _InterlockedExchangePointer_nf ARM, ARM64 <intrin.h>
_InterlockedExchangePointer_HLEAcquire, _InterlockedExchangePointer_HLERelease x64 <immintrin.h>

V architektuře x86 je makro, _InterlockedExchangePointer které volá _InterlockedExchange.

Poznámky

V 64bitovém systému jsou parametry 64 bitů a musí být zarovnané na 64bitových hranicích. V opačném případě funkce selže. V 32bitovém systému jsou parametry 32 bitů a musí být zarovnány na 32bitových hranicích. Další informace najdete v tématu zarovnání.

Na platformách ARM použijte vnitřní objekty s příponami _acq_rel , pokud potřebujete získat a uvolnit sémantiku, například na začátku a na konci kritické části. Vnitřní s příponou _nf (bez plotu) nefunguje jako paměťová bariéra.

Na platformách Intel, které podporují instrukce hardwarového zámku Elision (HLE), vnitřní objekty s _HLEAcquire příponami _HLERelease obsahují nápovědu k procesoru, který může zrychlit výkon odstraněním kroku zápisu zámku v hardwaru. Pokud jsou tyto vnitřní objekty volány na platformách, které nepodporují HLE, tip se ignoruje.

Tyto rutiny jsou k dispozici pouze jako vnitřní objekty.

END Microsoft Specific

Viz také

Vnitřní funkce kompilátoru
Konflikty s kompilátorem x86