Sdílet prostřednictvím


_InterlockedXor _InterlockedXor64

Specifické pro Microsoft

Provedení atomické bitová vylučují nebo operaci (XOR) na proměnnou sdíleny více vlákny.

long _InterlockedXor(    long volatile * Value,    long Mask ); long _InterlockedXor_acq(    long volatile * Value,    long Mask ); long _InterlockedXor_HLEAcquire(    long volatile * Value,    long Mask ); long _InterlockedXor_HLERelease(    long volatile * Value,    long Mask ); long _InterlockedXor_nf(    long volatile * Value,    long Mask ); long _InterlockedXor_np(    long volatile * Value,    long Mask ); long _InterlockedXor_rel(    long volatile * Value,    long Mask ); char _InterlockedXor8(    char volatile * Value,    char Mask ); char _InterlockedXor8_acq(    char volatile * Value,    char Mask ); char _InterlockedXor8_nf(    char volatile * Value,    char Mask ); char _InterlockedXor8_np(    char volatile * Value,    char Mask ); char _InterlockedXor8_rel(    char volatile * Value,    char Mask ); short _InterlockedXor16(    short volatile * Value,    short Mask ); short _InterlockedXor16_acq(    short volatile * Value,    short Mask ); short _InterlockedXor16_nf (    short volatile * Value,    short Mask ); short _InterlockedXor16_np (    short volatile * Value,    short Mask ); short _InterlockedXor16_rel(    short volatile * Value,    short Mask ); __int64 _InterlockedXor64(    __int64 volatile * Value,    __int64 Mask ); __int64 _InterlockedXor64_acq(    __int64 volatile * Value,    __int64 Mask );  __int64 _InterlockedXor64_HLEAcquire(    __int64 volatile * Value,    __int64 Mask ); __int64 _InterlockedXor64_HLERelease(    __int64 volatile * Value,    __int64 Mask );  __int64 _InterlockedXor64_nf(    __int64 volatile * Value,    __int64 Mask ); __int64 _InterlockedXor64_np(    __int64 volatile * Value,    __int64 Mask ); __int64 _InterlockedXor64_rel(    __int64 volatile * Value,    __int64 Mask );

Parametry

  • [ve out]Value
    Ukazatel na první operand, budou nahrazeny výsledek.

  • [v]Mask
    Druhý operand.

Vrácená hodnota

Původní hodnota První operand.

Požadavky

Vnitřní

Architektura

Záhlaví

_InterlockedXor, _InterlockedXor8, _InterlockedXor16, _InterlockedXor64

x 86, ARM,x64

< intrin.h >

_InterlockedXor_acq, _InterlockedXor_nf, _InterlockedXor_rel, _InterlockedXor8_acq, _InterlockedXor8_nf, _InterlockedXor8_rel, _InterlockedXor16_acq, _InterlockedXor16_nf, _InterlockedXor16_rel, _InterlockedXor64_acq, _InterlockedXor64_nf, _InterlockedXor64_rel,

ARM

< intrin.h >

_InterlockedXor_np, _InterlockedXor8_np, _InterlockedXor16_np, _InterlockedXor64_np

x64

< intrin.h >

_InterlockedXor_HLEAcquire, _InterlockedXor_HLERelease, _InterlockedXor64_HLEAcquire, _InterlockedXor64_HLERelease

x 86x64

< immintrin.h >

Poznámky

Počet název každé funkce určuje velikost bit argumentů.

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í ARM s _nf příponu ("žádné ohraničení") není fungovat jako překážku paměti.

Vnitřní objekty s _np příponu ("žádné předběžné") zabraňují možný předběžné operace bude vložen překladačem.

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.

Příklad

// _InterLockedXor.cpp
#include <stdio.h>
#include <intrin.h>

#pragma intrinsic(_InterlockedXor)

int main()
{
        long data1 = 0xFF00FF00;
        long data2 = 0x00FFFF00;
        long retval;
        retval = _InterlockedXor(&data1, data2);
        printf_s("0x%x 0x%x 0x%x", data1, data2, retval); 
}
  

Viz také

Referenční dokumentace

Vnitřní funkce kompilátoru

Konflikty s překladačem x86