Namespaces
Variants

ATOMIC_FLAG_INIT

From cppreference.net
Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
ATOMIC_FLAG_INIT
(C++11)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
헤더 파일에 정의됨 <atomic>
#define ATOMIC_FLAG_INIT /* implementation-defined */
(C++11부터)

std::atomic_flag 를 clear(false) 상태로 초기화하는 데 사용할 수 있는 초기화자를 정의합니다. 형식은 std:: atomic_flag v = ATOMIC_FLAG_INIT ; 입니다. 다른 초기화 문맥에서 사용할 수 있는지 여부는 명시되어 있지 않습니다.

만약 플래그가 complete object 이면서 static storage duration 을 가진다면, 이 initialization은 static 입니다.

이것은 std::atomic_flag 를 명확한 값으로 초기화하는 유일한 방법입니다: 다른 초기화 이후에 보유하는 값은 지정되지 않습니다.

(until C++20)

std::atomic_flag 의 기본 생성자가 이를 clear 상태로 초기화하므로 이 매크로는 더 이상 필요하지 않습니다. C 언어와의 호환성을 위해 유지됩니다.

(since C++20)

예제

#include <atomic>
std::atomic_flag static_flag = ATOMIC_FLAG_INIT; // 정적 초기화,
// 정적 객체의 동적 초기화 중 사용 가능함이 보장됨
int main()
{
    std::atomic_flag automatic_flag = ATOMIC_FLAG_INIT; // 동작이 보장됨
//    std::atomic_flag another_flag(ATOMIC_FLAG_INIT); // 미지정
}

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 2159 C++11 ATOMIC_FLAG_INIT
다른 초기화 컨텍스트에서 사용 가능한지 불명확했음
다른 사용법은
보장되지 않음
LWG 3659 C++20 ATOMIC_FLAG_INIT 가 폐기되었으나
일부 플랫폼의 C 언어에서 필요했음
폐기 상태가 해제됨

참고 항목

락-프리 불리언 원자 타입
(클래스)
C 문서 for ATOMIC_FLAG_INIT