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) |
*this verweist, oder tut nichts, wenn die Koroutine eine No-op-Koroutine ist.Das Verhalten ist undefiniert, wenn *this nicht auf eine unterbrochene Koroutine verweist oder die Koroutine keine No-op-Koroutine ist und an ihrem finalen Unterbrechungspunkt unterbrochen ist. Eine gleichzeitige Fortsetzung der Koroutine kann zu einem Datenwettlauf führen.
Die Fortsetzung einer Koroutine auf einem anderen Ausführungsagenten als dem, auf dem sie unterbrochen wurde, hat implementierungsdefiniertes Verhalten, es sei denn, jeder Ausführungsagent ist entweder ein durch std::thread oder std::jthread dargestellter Thread oder der Thread, der main ausführt.
Parameter
(keine)
Rückgabewert
(keine)
Exceptions
Wenn eine Ausnahme aus der Ausführung der Coroutine geworfen wird, wird die Ausnahme abgefangen und
unhandled_exception
auf dem Promise-Objekt der Coroutine aufgerufen. Wenn der Aufruf von
unhandled_exception
eine Ausnahme wirft oder erneut wirft, wird diese Ausnahme weitergegeben.
Hinweise
Eine Coroutine, die auf einem anderen Ausführungsagenten fortgesetzt wird, sollte es vermeiden, sich durchgängig auf eine konsistente Thread-Identität zu verlassen, wie etwa das Halten eines Mutex-Objekts über einen Suspend-Punkt hinweg.
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Siehe auch
|
zerstört eine Coroutine
(öffentliche Elementfunktion) |