Namensräume
Varianten
Aktionen

ATOMIC_FLAG_INIT

Von cppreference.com
< cpp‎ | atomic
 
 
Bibliothek für nebenläufige Programmierung
Threads
(C++11)
(C++20)
this_thread Namespace
(C++11)
(C++11)
(C++11)
Kooperatives Beenden
Gegenseitiger Ausschluss
(C++11)
Allgemeines Sperrungsmanagement
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Bedingungsvariablen
(C++11)
Semaphoren
Latches und Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
(C++11)
Sichere Wiederherstellung
(C++26)
Hazard Pointer
Atomare Typen
(C++11)
(C++20)
Initialisierung von atomaren Typen
(C++11)(veraltet in C++20)
(C++11)(veraltet in C++20)
ATOMIC_FLAG_INIT
(C++11)
Speicherordnung
(C++11)(deprecated in C++26)
Freie Funktionen für atomare Operationen
Freie Funktionen für atomare Flags
 
Definiert in Header <atomic>
#define ATOMIC_FLAG_INIT /* implementierungsdefiniert */
(seit C++11)

Definiert den Initialisierer, der verwendet werden kann, um std::atomic_flag im Format std::atomic_flag v = ATOMIC_FLAG_INIT; auf den Zustand "gelöscht" (false) zu initialisieren. Es ist nicht spezifiziert, ob er mit anderen Initialisierungskontexten verwendet werden kann.

Wenn das Flag ein vollständiges Objekt mit statischer Speicherungsdauer ist, ist diese Initialisierung statisch.

Dies ist der einzige Weg, std::atomic_flag auf einen bestimmten Wert zu initialisieren: Der Wert nach jeder anderen Initialisierung ist nicht spezifiziert.

(bis C++20)

Dieses Makro wird nicht mehr benötigt, da der Standardkonstruktor von std::atomic_flag ihn auf den Zustand "gelöscht" initialisiert. Es wird aus Kompatibilitätsgründen mit C beibehalten.

(seit C++20)

[bearbeiten] Beispiel

#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
}

[bearbeiten] Defect reports

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

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes 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, war aber unter bestimmten Plattformen in C erforderlich es ist nicht mehr als veraltet markiert

[bearbeiten] Siehe auch

der sperrfreie boolesche atomare Typ
(Klasse) [bearbeiten]
C-Dokumentation für ATOMIC_FLAG_INIT