Spec-Zone.ru › C++

ATOMIC_FLAG_INIT

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

Определяет инициализатор, который можно использовать для инициализации std::atomic_flag в сброшенное (false) состояние в форме 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 2159 C++11 не было ясно, можно ли использовать ATOMIC_FLAG_INIT
в других контекстах инициализации
другие способы использования
не гарантируются
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/cpp/atomic/ATOMIC_FLAG_INIT

Spec-Zone.ru

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