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