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