Namespaces
Variants

std::experimental::flex_barrier:: arrive_and_wait

From cppreference.net
void arrive_and_wait ( ) ;
(Concurrency TS)

Blöcke und erreicht den Synchronisationspunkt der flex_barrier .

Das Verhalten ist undefiniert, wenn der aufrufende Thread nicht in der Menge der teilnehmenden Threads dieser flex_barrier enthalten ist.

Aufrufe von arrive_and_wait synchronisieren mit dem Beginn der Abschlussphase der flex_barrier . Der Abschluss der Abschlussphase synchronisiert mit der Rückkehr vom Aufruf.

Aufrufe von arrive_and_drop und arrive_and_wait führen niemals Datenrennen mit sich selbst oder untereinander ein.

Hinweise

Es ist für einen Thread sicher, unmittelbar nach der Rückkehr von diesem Aufruf entweder arrive_and_wait() oder arrive_and_drop() aufzurufen (vorausgesetzt, das Funktionsobjekt für die Abschlussphase hat nicht Null zurückgegeben). Es ist nicht erforderlich sicherzustellen, dass alle blockierten Threads arrive_and_wait() verlassen haben, bevor ein Thread es erneut aufruft.

Die Abschlussphase führt das Funktionsobjekt aus, das bei der Konstruktion der flex_barrier angegeben wurde. Falls es -1 zurückgibt, bleibt der Satz teilnehmender Threads unverändert; andernfalls ist der Satz teilnehmender Threads ein neuer Satz mit einer Größe gleich dem Rückgabewert N und besteht aus den nächsten N Threads, die den Synchronisationspunkt erreichen. Wenn N == 0 , kann die flex_barrier nur zerstört werden.

Die anfängliche Gruppe teilnehmender Threads für eine flex_barrier , die für num_threads Threads konstruiert wurde, sind die ersten num_threads , die ihren Synchronisationspunkt erreichen.

Exceptions

Wirft nichts.

Siehe auch

Erreicht den Synchronisationspunkt und entfernt den aktuellen Thread aus dem Satz der teilnehmenden Threads
(Öffentliche Elementfunktion)