atomic_is_lock_free
|
헤더 파일에 정의됨
<stdatomic.h>
|
||
|
_Bool atomic_is_lock_free
(
const
volatile
A
*
obj
)
;
|
(C11 이후) | |
타입
A
(
obj
가 가리키는 객체의 타입)의 모든 객체에 대한 원자 연산이 잠금 없는 방식인지 결정합니다. 주어진 프로그램 실행에서,
atomic_is_lock_free
호출 결과는 동일한 타입의 모든 포인터에 대해 동일합니다.
이것은 모든
generic function
에 대해 정의된
atomic object types
A
입니다. 인자는 volatile 및 비-volatile 원자 객체의 주소를 모두 수용하기 위해 volatile 원자 타입에 대한 포인터이며, volatile 원자 객체에 이 연산을 적용할 때 volatile 의미론이 유지됩니다.
제네릭 함수의 이름이 매크로인지 외부 링크를 가진 식별자로 선언되었는지는 명시되지 않습니다. 실제 함수에 접근하기 위해 매크로 정의를 억제하는 경우(예: ( atomic_is_lock_free ) ( ... ) 와 같이 괄호로 묶은 경우), 또는 프로그램이 제네릭 함수의 이름으로 외부 식별자를 정의하는 경우, 그 동작은 정의되지 않습니다.
목차 |
매개변수
| obj | - | 검사할 atomic 객체에 대한 포인터 |
반환값
true
만약 해당 타입
A
의 모든 객체 연산이 lock-free인 경우,
false
그렇지 않은 경우.
예제
#include <stdio.h> #include <stdatomic.h> _Atomic struct A { int a[100]; } a; _Atomic struct B { int x, y; } b; int main(void) { printf("_Atomic struct A is lock free? %s\n", atomic_is_lock_free(&a) ? "true" : "false"); printf("_Atomic struct B is lock free? %s\n", atomic_is_lock_free(&b) ? "true" : "false"); }
가능한 출력:
_Atomic struct A is lock free? false _Atomic struct B is lock free? true
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| DR 465 | C11 | 이 함수는 객체별(object-specific)이었음 | 이 함수는 타입별(type-specific)임 |
참고문헌
- C17 표준 (ISO/IEC 9899:2018):
-
- 7.17.5.1 atomic_is_lock_free 제네릭 함수 (p: 205)
- C11 표준 (ISO/IEC 9899:2011):
-
- 7.17.5.1 atomic_is_lock_free 제네릭 함수 (p: 280)
참고 항목
|
주어진 원자적 타입이 잠금 없는 방식임을 나타냅니다
(매크로 상수) |
|
|
C++ 문서
for
atomic_is_lock_free
|
|