std::experimental::barrier::arrive_and_wait
| void arrive_and_wait(); |
(Concurrency TS) | |
Blockiert und trifft am Synchronisationspunkt des Barriers ein.
Das Verhalten ist undefiniert, wenn der aufrufende Thread nicht zur Menge der teilnehmenden Threads dieses Barriers gehört.
Aufrufe von arrive_and_wait synchronisieren mit dem Beginn der Abschlussphase des Barriers. Der Abschluss der Abschlussphase synchronisiert mit der Rückkehr aus dem Aufruf.
Aufrufe von arrive_and_drop und arrive_and_wait führen niemals zu Datenrennen mit sich selbst oder untereinander.
[bearbeiten] Hinweise
Es ist sicher, dass ein Thread entweder arrive_and_wait() oder arrive_and_drop() unmittelbar nach der Rückkehr aus diesem Aufruf aufrufen kann. Es ist nicht notwendig sicherzustellen, dass alle blockierten Threads arrive_and_wait() verlassen haben, bevor ein Thread ihn erneut aufruft.
Die Menge der teilnehmenden Threads für einen barrier, der für num_threads Threads konstruiert wurde, sind die ersten num_threads, die seinen Synchronisationspunkt erreichen. Diese Menge ändert sich von Zyklus zu Zyklus nicht, mit Ausnahme von Threads, die aufgrund von arrive_and_drop()-Aufrufen aus der Menge entfernt wurden.
[bearbeiten] Ausnahmen
Wirft nichts.
[bearbeiten] Siehe auch
| kommt am Synchronisationspunkt an und entfernt den aktuellen Thread aus der Menge der teilnehmenden Threads (öffentliche Memberfunktion) |