[coroutine.handle.resumption] (original) (raw)
17 Language support library [support]
17.12 Coroutines [support.coroutine]
17.12.3 Class template coroutine_handle [coroutine.handle]
17.12.3.4 Resumption [coroutine.handle.resumption]
Resuming a coroutine via resume, operator(), or destroyon an execution agent other than the one on which it was suspended has implementation-defined behavior unless each execution agent either is an instance of std::thread or std::jthread, or is the thread that executes main.
[ Note
:
A coroutine that is resumed on a different execution agent should avoid relying on consistent thread identity throughout, such as holding a mutex object across a suspend point.
— end note
]
[ Note
:
A concurrent resumption of the coroutine may result in a data race.
— end note
]
void operator()() const;void resume() const;
Preconditions: *this refers to a suspended coroutine.
The coroutine is not suspended at its final suspend point.
Effects:Resumes the execution of the coroutine.
Preconditions: *this refers to a suspended coroutine.