vnitřní funkce _InterlockedCompareExchangePointer
Specifické pro Microsoft
Provede atomickovou operaci, která uloží Exchange
adresu do Destination
adresy, pokud Comparand
je adresa stejná Destination
.
Syntaxe
void * _InterlockedCompareExchangePointer (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_acq (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_HLEAcquire (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_HLERelease (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_nf (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_np (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_rel (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
Parametry
Cíl
[in, out] Ukazatel na ukazatel na cílovou hodnotu. Znaménko se ignoruje.
Exchange
[v] Ukazatel výměny. Znaménko se ignoruje.
Porovnání a
[v] Ukazatel pro porovnání s cílem. Znaménko se ignoruje.
Vrácená hodnota
Vrácená hodnota je počáteční hodnota cíle.
Požadavky
Vnitřní | Architektura | Hlavička |
---|---|---|
_InterlockedCompareExchangePointer |
x86, ARM, x64, ARM64 | <intrin.h> |
_InterlockedCompareExchangePointer_acq , , _InterlockedCompareExchangePointer_nf _InterlockedCompareExchangePointer_rel |
ARM, ARM64 | <iiintrin.h> |
_InterlockedCompareExchangePointer_HLEAcquire , _InterlockedCompareExchangePointer_HLERelease |
x86, x64 | <immintrin.h> |
Poznámky
_InterlockedCompareExchangePointer
provede atomické porovnání Destination
adresy s Comparand
adresou. Je-li Destination
adresa rovna Comparand
adrese, Exchange
adresa je uložena v adrese určené Destination
. V opačném případě se neprovádí žádná operace.
_InterlockedCompareExchangePointer
poskytuje vnitřní podporu kompilátoru pro funkci Win32 Windows SDK InterlockedCompareExchangePointer .
Příklad použití _InterlockedCompareExchangePointer
najdete v tématu _InterlockedDecrement.
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í objekty ARM s příponou _nf
(bez plotu) nefungují jako paměťová bariéra.
Vnitřní objekty s příponou (bez předběžného _np
načtení) brání vložení možné operace předběžného načtení kompilátorem.
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