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
Definiert im Header <atomic>
#define ATOMIC_FLAG_INIT /* implementation-defined */
(seit C++11)

Definiert den Initialisierer, der verwendet werden kann, um std::atomic_flag in den gelöschten (false) Zustand zu initialisieren in der Form std:: atomic_flag v = ATOMIC_FLAG_INIT ; . Es ist nicht spezifiziert, ob es mit anderen Initialisierungskontexten verwendet werden kann.

Wenn das Flag ein complete object mit static storage duration ist, erfolgt diese initialization statisch .

Dies ist die einzige Möglichkeit, std::atomic_flag auf einen definierten Wert zu initialisieren: Der Wert nach jeder anderen Initialisierung ist nicht spezifiziert.

(until C++20)

Dieses Makro wird nicht mehr benötigt, da der Standardkonstruktor von std::atomic_flag es in den gelöschten Zustand initialisiert. Es wird für die Kompatibilität mit C beibehalten.

(since C++20)

Beispiel

#include <atomic>
std::atomic_flag static_flag = ATOMIC_FLAG_INIT; // statische Initialisierung,
// garantiert verfügbar während der dynamischen Initialisierung statischer Objekte.
int main()
{
    std::atomic_flag automatic_flag = ATOMIC_FLAG_INIT; // garantiert funktionsfähig
//    std::atomic_flag another_flag(ATOMIC_FLAG_INIT); // nicht spezifiziert
}

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 2159 C++11 es war unklar, ob ATOMIC_FLAG_INIT
mit anderen Initialisierungskontexten verwendet werden kann
andere Verwendungen sind
nicht garantiert
LWG 3659 C++20 ATOMIC_FLAG_INIT wurde als veraltet markiert, wurde aber in C auf einigen Plattformen benötigt die Veraltung wurde aufgehoben

Siehe auch

der lock-freie boolesche atomare Typ
(Klasse)
C-Dokumentation für ATOMIC_FLAG_INIT