Spec-Zone.ru › C++

ATOMIC_FLAG_INIT

Определено в заголовке <atomic>
#define ATOMIC_FLAG_INIT /* implementation-defined */
(с C++11)

Определяет инициализатор, который можно использовать для инициализации std::atomic_flag в очищенном (ложном) состоянии с помощью оператора std::atomic_flag v = ATOMIC_FLAG_INIT;. Не определено, можно ли его использовать в других контекстах инициализации.

Если флаг имеет статическую продолжительность хранения, эта инициализация является статической.

Это единственный способ инициализации std::atomic_flag определённым значением: значение после любой другой инициализации не определено.

(до C++20)

Эта макрокоманда больше не нужна, так как конструктор по умолчанию для std::atomic_flag инициализирует его в очищенном состоянии. Она сохраняется для совместимости с C.

(с C++20)

Пример

#include <atomic>
 
std::atomic_flag static_flag = ATOMIC_FLAG_INIT; // static initialization,
// guaranteed to be available during dynamic initialization of static objects.
 
int main()
{
    std::atomic_flag automatic_flag = ATOMIC_FLAG_INIT; // guaranteed to work
//    std::atomic_flag another_flag(ATOMIC_FLAG_INIT); // unspecified
}

Отчёты об ошибках

Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применён к Поведение, как опубликовано Правильное поведение
LWG 3659 C++20 ATOMIC_FLAG_INIT была устаревшей, но необходимой в C на некоторых платформах она не устаревшая

См. также

atomic_flag
(C++11)
атомарный булевый тип без блокировки
(класс)
Документация C для ATOMIC_FLAG_INIT

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/atomic/ATOMIC_FLAG_INIT

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API