_InterlockedExchangePointer vnitřní funkce
Specifické pro Microsoft
Provedení operace atomické exchange, který zkopíruje adresu jako druhý argument předaný na první a vrátí původní adresu prvního.
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
[ve out]Target
Ukazatel na ukazatel na tuto hodnotu pro výměnu.Funkce nastaví hodnotu Value a vrátí původní hodnotu.[v]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í |
---|---|---|
_InterlockedExchangePointer |
x 86, ARM,x64 |
< intrin.h > |
_InterlockedExchangePointer_acq, _InterlockedExchangePointer_rel, _InterlockedExchangePointer_nf |
ARM |
< intrin.h > |
_InterlockedExchangePointer_HLEAcquire, _InterlockedExchangePointer_HLERelease |
x64Díky podpoře HLE |
< immintrin.h > |
Na architektury x 86 _InterlockedExchangePointer je makra, která volá _InterlockedExchange.
Poznámky
64bitová verze systému parametry jsou 64 bitů a musí být uveden do hranice 64-bit; jinak funkce se nezdaří.Parametry na 32bitové verze systému, 32 bitů a musí být uveden do 32-bit hranice.Další informace naleznete v tématu zarovnat.
Na platformách ARM, použijte vnitřní objekty s _acq a _rel přípony, pokud potřebujete získat a verze sémantiku, například na začátku a na konci kritické sekce.Vnitřní 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.