std::experimental::barrier::arrive_and_wait
void arrive_and_wait(); |
(concurrency TS) | |
Blocks and arrive at the barrier's synchronization point.
The behavior is undefined if the calling thread is not in the set of participating threads of this barrier.
Calls to arrive_and_wait
synchronizes with the start of the completion phase of the barrier. The completion of the completion phase synchronizes with the return from the call.
Calls to arrive_and_drop
and arrive_and_wait
never introduce data races with themselves or each other.
Notes
It is safe for a thread to call either arrive_and_wait()
or arrive_and_drop()
immediately on return from this call. It's not necessary to ensure that all blocked threads have exited arrive_and_wait()
before a thread calls it again.
The set of participating threads for a barrier
constructed for num_threads
threads is the first num_threads
to arrive at its synchronization point. This set does not change from cycle to cycle, except for threads removed from the set due to arrive_and_drop()
calls.
Exceptions
Throws nothing.
See also
arrive at the synchronization point and remove the current thread from the set of participating threads (public member function) |