Namespaces
Variants

std::barrier<CompletionFunction>:: barrier

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)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
constexpr explicit barrier ( std:: ptrdiff_t expected,
CompletionFunction f = CompletionFunction ( ) ) ;
(1) (seit C++20)
barrier ( const barrier & ) = delete ;
(2) (seit C++20)
1) Setzt sowohl den anfänglich erwarteten Zähler für jede Phase als auch den aktuell erwarteten Zähler für die erste Phase auf expected , initialisiert das Abschlussfunktionsobjekt mit std :: move ( f ) und startet dann die erste Phase. Das Verhalten ist undefiniert, wenn expected negativ ist oder größer als max() .
2) Der Kopierkonstruktor ist gelöscht. barrier ist weder kopierbar noch verschiebbar.

Parameter

expected - Anfangswert des erwarteten Zählers
f - Funktionsobjekt für den Abschluss, das beim Phasenabschlussschritt aufgerufen wird

Exceptions

1) Jede Ausnahme, die vom Move-Konstruktor von CompletionFunction geworfen wird.

Hinweise

expected darf null sein. Allerdings führt der Aufruf einer beliebigen nicht-statischen Memberfunktion außer dem Destruktor auf einem solchen barrier zu undefiniertem Verhalten. Mit anderen Worten, ein solcher barrier kann nur zerstört werden.