std::barrier<CompletionFunction>::barrier

From cppreference.com
< cpp‎ | thread‎ | barrier
 
 
Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
(C++11)
Generic lock management
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
(C++11)
Safe Reclamation
(C++26)
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
Free functions for atomic operations
Free functions for atomic flags
 
 
constexpr explicit barrier( std::ptrdiff_t expected,
                            CompletionFunction f = CompletionFunction());
(1) (since C++20)
barrier( const barrier& ) = delete;
(2) (since C++20)
1) Sets the both initial expected count for each phase and the current expected count for the first phase to expected, initializes the completion function object with std::move(f), and then starts the first phase. The behavior is undefined if expected is negative or greater than max().
2) Copy constructor is deleted. barrier is neither copyable nor movable.

Parameters

expected - initial value of the expected count
f - completion function object to be called on phase completion step

Exceptions

1) Any exception thrown by CompletionFunction's move constructor.

Notes

expected is permitted to be zero. However, calling any non-static member function other than the destructor on such barrier results in undefined behavior. In other words, such barrier can only be destroyed.