Namensräume
Varianten
Aktionen

std::barrier<CompletionFunction>::arrive_and_wait

Von cppreference.com
< cpp‎ | thread‎ | barrier
 
 
Bibliothek für nebenläufige Programmierung
Threads
(C++11)
(C++20)
this_thread Namespace
(C++11)
(C++11)
(C++11)
Kooperatives Beenden
Gegenseitiger Ausschluss
(C++11)
Allgemeines Sperrungsmanagement
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Bedingungsvariablen
(C++11)
Semaphoren
Latches und Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
(C++11)
Sichere Wiederherstellung
(C++26)
Hazard Pointer
Atomare Typen
(C++11)
(C++20)
Initialisierung von atomaren Typen
(C++11)(veraltet in C++20)
(C++11)(veraltet in C++20)
Speicherordnung
(C++11)(deprecated in C++26)
Freie Funktionen für atomare Operationen
Freie Funktionen für atomare Flags
 
 
void arrive_and_wait();
(seit C++20)

Dekrementiert atomar den erwarteten Zähler um 1 und blockiert dann am Synchronisationspunkt für die aktuelle Phase, bis der Phasenabschluss der aktuellen Phase ausgeführt wird. Entspricht wait(arrive());.

Das Verhalten ist undefiniert, wenn der erwartete Zähler für die aktuelle Phase null ist.

Inhalt

[bearbeiten] Parameter

(keine)

[bearbeiten] Rückgabewert

(keine)

[bearbeiten] Ausnahmen

Wirft std::system_error mit einem für Mutex-Typen zulässigen Fehlercode im Fehlerfall.

[bearbeiten] Hinweise

Wenn der aktuelle erwartete Zähler durch den Aufruf dieser Funktion auf null dekrementiert wird, wird der Phasenabschluss ausgeführt und diese Funktion blockiert nicht.

Wenn der aktuelle erwartete Zähler vor dem Aufruf dieser Funktion null ist, ist der anfängliche erwartete Zähler für alle nachfolgenden Phasen ebenfalls null, was bedeutet, dass die barrier nicht wiederverwendet werden kann.

[bearbeiten] Beispiel