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 | Hlavička |
---|---|---|
_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