funkcje wewnętrzne _InterlockedExchangePointer
Specyficzne dla firmy Microsoft
Wykonuje operację wymiany niepodzielnej, która kopiuje adres przekazany jako drugi argument do pierwszego argumentu i zwraca oryginalny adres pierwszego.
Składnia
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
Obiekt docelowy
[in, out] Wskaźnik do wskaźnika do wartości do wymiany. Funkcja ustawia wartość na Wartość i zwraca poprzednią wartość.
Wartość
[in] Wartość do wymiany z wartością wskazywaną przez element Target.
Wartość zwracana
Funkcja zwraca początkową wartość wskazywaną przez element Target.
Wymagania
Nieodłączny | Architektura | Nagłówek |
---|---|---|
_InterlockedExchangePointer |
x86, ARM, x64, ARM64 | <intrin.h> |
_InterlockedExchangePointer_acq , , _InterlockedExchangePointer_rel _InterlockedExchangePointer_nf |
ARM, ARM64 | <intrin.h> |
_InterlockedExchangePointer_HLEAcquire , _InterlockedExchangePointer_HLERelease |
x64 | <immintrin.h> |
W architekturze _InterlockedExchangePointer
x86 jest makro, które wywołuje _InterlockedExchange
metodę .
Uwagi
W systemie 64-bitowym parametry są 64-bitowe i muszą być wyrównane do granic 64-bitowych. W przeciwnym razie funkcja kończy się niepowodzeniem. W systemie 32-bitowym parametry są 32-bitowe i muszą być wyrównane do granic 32-bitowych. Aby uzyskać więcej informacji, zobacz wyrównanie.
Na platformach ARM użyj funkcji wewnętrznych i _acq
_rel
sufiksów, jeśli potrzebujesz semantyki uzyskiwania i wydawania, takich jak na początku i na końcu sekcji krytycznej. Sufiks wewnętrzny z sufiksem _nf
("bez ogrodzenia") nie działa jako bariera pamięci.
Na platformach Intel, które obsługują instrukcje dotyczące blokady sprzętu Elision (HLE), funkcje wewnętrzne z sufiksami _HLEAcquire
zawierają _HLERelease
wskazówkę dla procesora, który może przyspieszyć wydajność, eliminując krok zapisu blokady w sprzęcie. Jeśli te funkcje wewnętrzne są wywoływane na platformach, które nie obsługują HLE, wskazówka jest ignorowana.
Te procedury są dostępne tylko jako funkcje wewnętrzne.
END Microsoft Specific