Namensräume
Varianten
Aktionen

std::experimental::flex_barrier::arrive_and_drop

Von cppreference.com
 
 
 
 
 
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) [bearbeiten]