table of contents
std::experimental::flex_barrier(3) | C++ Standard Libary | std::experimental::flex_barrier(3) |
NAME¶
std::experimental::flex_barrier - std::experimental::flex_barrier
Synopsis¶
Defined in header <experimental/barrier>
class flex_barrier; (concurrency TS)
The class std::experimental::flex_barrier provides a thread-coordination
mechanism
that allows a set of participating threads to block until an operation is
completed.
Unlike std::experimental::latch, barriers are reusable; once the
participating
threads are released from a barrier's synchronization point, they can reuse
the same
barrier.
A barrier has a completion phase, which is executed by one of the
participating
threads once all threads in the set of participating threads arrive at the
synchronization point. The arrive_and_wait and arrive_and_drop calls
synchronize
with the start of the completion phase; the end of the completion phase
synchronizes
with the returns from all calls blocked by its completion.
std::experimental::flex_barrier allows the user to control the completion
phase with
a function object. If the function object returns -1, the set of
participating
threads is unchanged (and the same set of participating threads must arrive
at the
synchronization point in the next cycle); otherwise the set of participating
threads
becomes a new set with a size equal to the returned value N, and consists of
the
next N threads to arrive at the barrier's synchronization point.
Users who do not need this functionality can use
std::experimental::barrier.
Member functions¶
constructor constructs a flex_barrier
(public member function)
destructor destroys the flex_barrier
(public member function)
operator= not copy-assignable
[deleted] (public member function)
arrive_and_wait arrive at the synchronization point and block
(public member function)
arrive at the synchronization point and remove the current thread
arrive_and_drop from the set of participating threads
(public member function)
2024.06.10 | http://cppreference.com |