std::coroutine_handle<Promise>::operator(), std::coroutine_handle<Promise>::resume
| Mitglied anderer Spezialisierungen |
||
| void operator()() const; void resume() const; |
(1) | (seit C++20) |
| Mitglied der Spezialisierung std::coroutine_handle<std::noop_coroutine_promise> |
||
| constexpr void operator()() const noexcept; constexpr void resume() const noexcept; |
(2) | (seit C++20) |
Das Verhalten ist undefiniert, wenn *this nicht auf eine suspendierte Coroutine verweist oder die Coroutine keine No-Op-Coroutine ist und an ihrem finalen Suspendpunkt suspendiert wurde. Eine gleichzeitige Wiederaufnahme der Coroutine kann zu einem Datenrennen führen.
Die Wiederaufnahme einer Coroutine auf einem anderen Ausführungsagenten als dem, auf dem sie suspendiert wurde, hat implementierungsabhängiges Verhalten, es sei denn, jeder Ausführungsagent ist entweder ein Thread, der durch std::thread oder std::jthread dargestellt wird, oder ist der Thread, der main ausführt.
Inhalt |
[bearbeiten] Parameter
(keine)
[bearbeiten] Rückgabewert
(keine)
[bearbeiten] Ausnahmen
Wenn eine Ausnahme aus der Ausführung der Coroutine geworfen wird, wird die Ausnahme abgefangen und unhandled_exception für das Promise-Objekt der Coroutine aufgerufen. Wenn der Aufruf von unhandled_exception eine Ausnahme wirft oder erneut wirft, wird diese Ausnahme weitergegeben.
[bearbeiten] Hinweise
Eine Coroutine, die auf einem anderen Ausführungsagenten wiederaufgenommen wird, sollte es vermeiden, sich durchgehend auf eine konsistente Thread-Identität zu verlassen, z. B. das Halten eines Mutex-Objekts über einen Suspendpunkt hinaus.
[bearbeiten] Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[bearbeiten] Siehe auch
| zerstört eine Coroutine (öffentliche Memberfunktion) |