_interlockedbittestandset Intrinsic Functions
Microsoft 전용
주소 a의 비트 b를 검사하고 현재 값을 1로 설정하기 전에 반환하는 명령을 생성합니다.
unsigned char _interlockedbittestandset(
long *a,
long b
);
unsigned char _interlockedbittestandset_acq(
long *a,
long b
);
unsigned char _interlockedbittestandset_HLEAcquire(
long *a,
long b
);
unsigned char _interlockedbittestandset_HLERelease(
long *a,
long b
);
unsigned char _interlockedbittestandset_nf(
long *a,
long b
);
unsigned char _interlockedbittestandset_rel(
long *a,
long b
);
unsigned char _interlockedbittestandset64(
__int64 *a,
__int64 b
);
unsigned char _interlockedbittestandset64_HLEAcquire(
__int64 *a,
__int64 b
);
unsigned char _interlockedbittestandset64_HLERelease(
__int64 *a,
__int64 b
);
매개 변수
[in] a
검사할 메모리에 대한 포인터입니다.[in] b
테스트할 비트 위치입니다.
반환 값
설정되기 전에 b 위치의 비트 값입니다.
요구 사항
내장 함수 |
아키텍처 |
Header |
---|---|---|
_interlockedbittestandset |
x86, ARM, x64 |
<intrin.h> |
_interlockedbittestandset_acq, _interlockedbittestandset_nf, _interlockedbittestandset_rel |
ARM |
<intrin.h> |
_interlockedbittestandset_HLEAcquire, _interlockedbittestandset_HLERelease |
x86, x64 |
<immintrin.h> |
_interlockedbittestandset64 |
x64 |
<intrin.h> |
_interlockedbittestandset64_HLEAcquire, _interlockedbittestandset64_HLERelease |
x64 |
<immintrin.h> |
설명
x86 및 x64 프로세서에서 이러한 내장 함수는 lock bts 명령을 사용하여 지정한 비트를 읽고 1로 설정합니다. 이 작업은 원자성 작업입니다.
ARM 프로세서에서는 임계 영역의 시작 및 끝과 같은 위치에서 의미 체계를 획득하고 해제하려면 _acq 및 _rel 접미사가 포함된 내장 함수를 사용합니다. _nf("no fence"의 약어) 접미사가 포함된 ARM 내장 함수는 메모리 장벽으로 작동하지 않습니다.
HLE(Hardware Lock Elision) 명령을 지원하는 Intel 프로세서에서 _HLEAcquire 및 _HLERelease 접미사가 포함된 내장 함수는 하드웨어에서 잠금 쓰기 단계를 제거하여 성능을 향상시킬 수 있는 힌트를 프로세서에 포함합니다. HLE를 지원하지 않는 프로세서에서 이러한 내장 함수를 호출하면 힌트는 무시됩니다.
이러한 루틴은 내장 함수로만 사용할 수 있습니다.