ATOMIC_FLAG_INIT
| 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_INITmit 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
| (C++11) |
der sperrfreie boolesche atomare Typ (Klasse) |
| C-Dokumentation für ATOMIC_FLAG_INIT
| |