std::experimental::flex_barrier::arrive_and_drop
| void arrive_and_drop(); |
(Concurrency TS) | |
Erreicht den Synchronisationspunkt des flex_barrier und entfernt den aktuellen Thread aus der Menge der teilnehmenden Threads. Es ist nicht spezifiziert, ob diese Funktion blockiert, bis die Abschlussphase beendet ist. Wenn die Funktion blockiert, kann der aufrufende Thread ausgewählt werden, um die Abschlussphase auszuführen.
Das Verhalten ist undefiniert, wenn der aufrufende Thread nicht in der Menge der teilnehmenden Threads dieses flex_barrier ist.
Aufrufe von arrive_and_drop synchronisieren mit dem Beginn der Abschlussphase des flex_barrier. Wenn der Aufruf blockiert, synchronisiert die Beendigung der Abschlussphase mit der Rückgabe aus dem Aufruf.
Aufrufe von arrive_and_drop und arrive_and_wait führen niemals zu Datenrennen mit sich selbst oder untereinander.
[bearbeiten] Ausnahmen
Wirft nichts.
[bearbeiten] Hinweise
Die Abschlussphase wird auch dann ausgeführt, wenn jeder teilnehmende Thread arrive_and_drop aufruft.
Nachdem ein Thread arrive_and_drop für einen flex_barrier aufgerufen hat, kann er keine Memberfunktion dieser Barriere mehr aufrufen, außer dem Destruktor, selbst wenn das von der Abschlussphase aufgerufene Funktions-Objekt einen positiven Wert zurückgibt.
[bearbeiten] Siehe auch
| kommt am Synchronisationspunkt an und blockiert (öffentliche Memberfunktion) |