funkcje wewnętrzne _InterlockedCompareExchangePointer

Specyficzne dla firmy Microsoft

Wykonuje niepodzielna operację, która przechowuje Exchange adres w adresie Destination , jeśli Comparand adres i Destination są równe.

Składnia

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

Lokalizacja docelowa
[in, out] Wskaźnik do wskaźnika do wartości docelowej. Znak jest ignorowany.

Exchange
[in] Wskaźnik programu Exchange. Znak jest ignorowany.

Comparand
[in] Wskaźnik do porównania z miejscem docelowym. Znak jest ignorowany.

Wartość zwracana

Wartość zwracana jest początkową wartością miejsca docelowego.

Wymagania

Wewnętrzne Architektura Nagłówek
_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>

Uwagi

_InterlockedCompareExchangePointer Wykonuje niepodzielne porównanie Destination adresu z Comparand adresem. Destination Jeśli adres jest równy Comparand adresowi, Exchange adres jest przechowywany w adresie określonym przez Destination. W przeciwnym razie nie jest wykonywana żadna operacja.

_InterlockedCompareExchangePointerZapewnia wewnętrzną obsługę kompilatora dla funkcji InterlockedCompareExchangePointer zestawu Windows SDK systemu Windows w systemie Win32.

Aby zapoznać się z przykładem korzystania z usługi _InterlockedCompareExchangePointer, zobacz _InterlockedDecrement.

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. Funkcje wewnętrzne arm z sufiksem _nf ("bez ogrodzenia") nie działają jako bariera pamięci.

Funkcje wewnętrzne z sufiksem _np ("brak pobierania wstępnego") uniemożliwiają wstawienie możliwej operacji pobierania wstępnego przez kompilator.

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
Słowa kluczowe