다음을 통해 공유


_interlockedbittestandreset Intrinsic Functions

Microsoft 전용

주소 a의 비트 b를 0으로 설정하고 원래 값을 반환하는 명령을 생성합니다.

unsigned char _interlockedbittestandreset(
   long *a,
   long b
);
unsigned char _interlockedbittestandreset_acq(
   long *a,
   long b
);
unsigned char _interlockedbittestandreset_HLEAcquire(
   long *a,
   long b
);
unsigned char _interlockedbittestandreset_HLERelease(
   long *a,
   long b
);
unsigned char _interlockedbittestandreset_nf(
   long *a,
   long b
);
unsigned char _interlockedbittestandreset_rel(
   long *a,
   long b
); 
unsigned char _interlockedbittestandreset64(
   __int64 *a,
   __int64 b
); 
unsigned char _interlockedbittestandreset64_HLEAcquire(
   __int64 *a,
   __int64 b
);
unsigned char _interlockedbittestandreset64_HLERelease(
   __int64 *a,
   __int64 b
);

매개 변수

  • [in] a
    검사할 메모리에 대한 포인터입니다.

  • [in] b
    테스트할 비트 위치입니다.

반환 값

b로 지정된 위치에 있는 비트의 원래 값입니다.

요구 사항

내장 함수

아키텍처

Header

_interlockedbittestandreset

x86, ARM, x64

<intrin.h>

_interlockedbittestandreset_acq, _interlockedbittestandreset_nf, _interlockedbittestandreset_rel

ARM

<intrin.h>

_interlockedbittestandreset_HLEAcquire, _interlockedbittestandreset_HLERelease

x86, x64

<immintrin.h>

_interlockedbittestandreset64

x64

<intrin.h>

_interlockedbittestandreset64_HLEAcquire, _interlockedbittestandreset64_HLERelease

x64

<immintrin.h>

설명

x86 및 x64 프로세서에서 이러한 내장 함수는 원자성 작업에서 지정된 비트를 읽고 0으로 설정하는 lock btr 명령을 사용합니다.

ARM 프로세서에서는 임계 영역의 시작 및 끝과 같은 위치에서 의미 체계를 획득하고 해제하려면 _acq_rel 접미사가 포함된 내장 함수를 사용합니다. _nf("no fence"의 약어) 접미사가 포함된 ARM 내장 함수는 메모리 장벽으로 작동하지 않습니다.

HLE(Hardware Lock Elision) 명령을 지원하는 Intel 프로세서에서 _HLEAcquire_HLERelease 접미사가 포함된 내장 함수는 하드웨어에서 잠금 쓰기 단계를 제거하여 성능을 향상시킬 수 있는 힌트를 프로세서에 포함합니다. HLE를 지원하지 않는 프로세서에서 이러한 내장 함수를 호출하면 힌트는 무시됩니다.

이러한 루틴은 내장 함수로만 사용할 수 있습니다.

참고 항목

참조

컴파일러 내장 함수

x86 컴파일러와 충돌