std::coroutine_handle<Promise>:: operator(), std::coroutine_handle<Promise>:: resume
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Coroutine traits | ||||
|
(C++20)
|
||||
| Coroutine handle | ||||
|
(C++20)
|
||||
| No-op coroutines | ||||
|
(C++20)
|
||||
|
(C++20)
|
||||
| Trivial awaitables | ||||
|
(C++20)
|
||||
|
(C++20)
|
||||
| Range generators | ||||
|
(C++23)
|
| Member functions | ||||
| Conversion | ||||
| Observers | ||||
| Control | ||||
|
coroutine_handle::operator()
coroutine_handle::resume
|
||||
| Promise access | ||||
| Export/import | ||||
| Non-member functions | ||||
| Helper classes | ||||
|
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, falls * this nicht auf eine suspendierte Coroutine verweist oder die Coroutine keine No-Op-Coroutine ist und an ihrem finalen Suspend-Punkt suspendiert ist. Eine gleichzeitige Wiederaufnahme der Coroutine kann zu einem Data Race führen.
Die Wiederaufnahme einer Coroutine auf einem Ausführungsagenten, der nicht derjenige ist, auf dem sie angehalten wurde, hat implementierungsdefiniertes Verhalten, es sei denn, jeder Ausführungsagent ist entweder ein durch
std::thread
oder
std::jthread
repräsentierter Thread oder ist der Thread, der
main
ausführt.
Inhaltsverzeichnis |
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) |