Udostępnij za pośrednictwem


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

Wewnętrzne 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 _InterlockedExchangemetodę .

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

Zobacz też

Funkcje wewnętrzne kompilatora
Konflikty z kompilatorem x86