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 | ||||
|
Membre d'autres spécialisations
|
||
|
void
operator
(
)
(
)
const
;
void resume ( ) const ; |
(1) | (depuis C++20) |
|
Membre de la spécialisation
std::coroutine_handle<std::noop_coroutine_promise>
|
||
|
constexpr
void
operator
(
)
(
)
const
noexcept
;
constexpr void resume ( ) const noexcept ; |
(2) | (depuis C++20) |
Le comportement est indéfini si * this ne fait pas référence à une coroutine suspendue, ou si la coroutine n'est pas une coroutine no-op et est suspendue à son point de suspension final. Une reprise concurrente de la coroutine peut entraîner une course aux données.
La reprise d'une coroutine sur un agent d'exécution autre que celui sur lequel elle a été suspendue a un comportement défini par l'implémentation, sauf si chaque agent d'exécution est soit un thread représenté par
std::thread
ou
std::jthread
, ou est le thread exécutant
main
.
Table des matières |
Paramètres
(aucun)
Valeur de retour
(aucun)
Exceptions
Si une exception est levée lors de l'exécution de la coroutine, l'exception est capturée et
unhandled_exception
est appelé sur l'objet promise de la coroutine. Si l'appel à
unhandled_exception
lève ou relève une exception, cette exception est propagée.
Notes
Une coroutine qui est reprise sur un agent d'exécution différent doit éviter de s'appuyer sur une identité de thread cohérente, comme maintenir un objet mutex au-delà d'un point de suspension.
Exemple
|
Cette section est incomplète
Raison : aucun exemple |
Voir aussi
|
détruit une coroutine
(fonction membre publique) |