std::coroutine_handle<Promise>::operator(), std::coroutine_handle<Promise>::resume
| Член других специализаций | ||
void operator()() const; void resume() const; | (1) | (с C++20) |
Член специализации std::coroutine_handle<std::noop_coroutine_promise>
| ||
constexpr void operator()() const noexcept; constexpr void resume() const noexcept; | (2) | (с C++20) |
*this, или ничего не делает, если сопрограмма — сопрограмма без действий.Поведение является неопределённым, если *this не ссылается на приостановленную сопрограмму или сопрограмма не является сопрограммой без действий и не приостановлена на своей последней точке приостановки. Одновременное возобновление сопрограммы может привести к гонке данных.
Возобновление сопрограммы на агенте выполнения, отличном от агента, на котором она была приостановлена, имеет поведение, определяемое реализацией, если каждый агент выполнения либо является потоком, представленным std::thread или std::jthread, либо является потоком, выполняющим main.
Параметры
(нет)
Возвращаемое значение
(нет)
Исключения
Если во время выполнения сопрограммы произошло исключение, оно перехватывается, и вызывается unhandled_exception для объекта обещания сопрограммы. Если вызов unhandled_exception вызывает или повторно вызывает исключение, это исключение передаётся дальше.
Примечания
Сопрограмма, возобновлённая на другом агенте выполнения, должна избегать зависимости от постоянной идентичности потока, такой как удержание объекта мьютекса через точку приостановки.
Пример
См. также
|
(C++20) | уничтожает сопрограмму (публичный член-функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/coroutine/coroutine_handle/resume