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
Défini dans l'en-tête <atomic>
#define ATOMIC_FLAG_INIT /* implementation-defined */
(depuis C++11)

Définit l'initialiseur qui peut être utilisé pour initialiser std::atomic_flag à l'état effacé (false) sous la forme std:: atomic_flag v = ATOMIC_FLAG_INIT ; . Il n'est pas spécifié s'il peut être utilisé avec d'autres contextes d'initialisation.

Si l'objet est un objet complet avec une durée de stockage statique , cette initialisation est statique .

C'est la seule manière d'initialiser std::atomic_flag à une valeur définie : la valeur maintenue après toute autre initialisation est non spécifiée.

(until C++20)

Cette macro n'est plus nécessaire car le constructeur par défaut de std::atomic_flag l'initialise à l'état effacé. Elle est conservée pour la compatibilité avec le C.

(since C++20)

Exemple

#include <atomic>
std::atomic_flag static_flag = ATOMIC_FLAG_INIT; // initialisation statique,
// garantie d'être disponible durant l'initialisation dynamique des objets statiques.
int main()
{
    std::atomic_flag automatic_flag = ATOMIC_FLAG_INIT; // fonctionnement garanti
//    std::atomic_flag another_flag(ATOMIC_FLAG_INIT); // non spécifié
}

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Applicable à Comportement publié Comportement corrigé
LWG 2159 C++11 il n'était pas clair si ATOMIC_FLAG_INIT
pouvait être utilisé dans d'autres contextes d'initialisation
les autres utilisations ne sont
pas garanties
LWG 3659 C++20 ATOMIC_FLAG_INIT était déprécié, mais nécessaire en C sur certaines plateformes il n'est plus déprécié

Voir aussi

le type atomique booléen sans verrouillage
(classe)
Documentation C pour ATOMIC_FLAG_INIT