ATOMIC_FLAG_INIT
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Определено в заголовочном файле
<atomic>
|
||
|
#define ATOMIC_FLAG_INIT /* определяется реализацией */
|
(начиная с C++11) | |
Определяет инициализатор, который может использоваться для инициализации std::atomic_flag в очищенное (false) состояние в форме std:: atomic_flag v = ATOMIC_FLAG_INIT ; . Не определено, может ли он использоваться в других контекстах инициализации.
Если флаг имеет complete object с static storage duration , это initialization is static .
|
Это единственный способ инициализировать std::atomic_flag в определённое состояние: значение после любой другой инициализации не определено. |
(until C++20) |
|
Этот макрос больше не нужен, поскольку конструктор по умолчанию std::atomic_flag инициализирует его в очищенное состояние. Он сохранён для совместимости с 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 | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 2159 | C++11 |
было неясно, может ли
ATOMIC_FLAG_INIT
использоваться в других контекстах инициализации |
другие варианты использования
не гарантируются |
| LWG 3659 | C++20 |
ATOMIC_FLAG_INIT
был устаревшим, но необходим в C на некоторых платформах
|
он восстановлен из устаревшего состояния |
Смотрите также
|
(C++11)
|
безблокировочный булевый атомарный тип
(класс) |
|
Документация C
для
ATOMIC_FLAG_INIT
|
|