std::experimental:: barrier
|
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) |