Namespaces
Variants

std::experimental:: barrier

From cppreference.net
Definiert in Header <experimental/barrier>
class barrier ;
(Concurrency TS)

Die Klasse std::experimental::barrier bietet einen Thread-Koordinationsmechanismus, der es einer Gruppe teilnehmender Threads ermöglicht zu blockieren, bis ein Vorgang abgeschlossen ist. Im Gegensatz zu std::experimental::latch sind Barrieren wiederverwendbar; sobald die teilnehmenden Threads vom Synchronisationspunkt einer Barriere freigegeben werden, können sie dieselbe Barriere erneut verwenden.

Eine Barriere hat eine Abschlussphase, die von einem der teilnehmenden Threads ausgeführt wird, sobald alle Threads in der Gruppe der teilnehmenden Threads den Synchronisationspunkt erreicht haben. Die arrive_and_wait und arrive_and_drop Aufrufe synchronisieren mit dem Beginn der Abschlussphase; das Ende der Abschlussphase synchronisiert mit den Rückgaben aller durch ihren Abschluss blockierten Aufrufe.

Für std::experimental::barrier ist die Abschlussphase leer. std::experimental::flex_barrier ermöglicht es dem Benutzer, die Abschlussphase mit einem Funktionsobjekt zu steuern.

Die Menge der teilnehmenden Threads für eine barrier , die für num_threads Threads konstruiert wurde, sind die ersten num_threads Threads, die nach der Konstruktion ihren Synchronisationspunkt erreichen. Dieselbe Menge von Threads (außer Threads, die arrive_and_drop() aufgerufen haben) muss in jedem Zyklus an der barrier ankommen.

Memberfunktionen

Konstruiert eine barrier
(öffentliche Elementfunktion)
Zerstört die Barriere
(öffentliche Elementfunktion)
operator=
[deleted]
Nicht kopierzuweisbar
(öffentliche Elementfunktion)
Erreicht den Synchronisationspunkt und blockiert
(öffentliche Elementfunktion)
Erreicht den Synchronisationspunkt und entfernt den aktuellen Thread aus dem Satz teilnehmender Threads
(öffentliche Elementfunktion)