std::coroutine_handle<Promise>::operator(), std::coroutine_handle<Promise>::resume
< cpp | coroutine | coroutine handle
特化 std::coroutine_handle<> 的成员 |
||
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 起) |
1) 恢复 *this 所指代的协程的执行,或若该协程为无操作协程则不做任何事。
若需要恢复且 *this 不指代协程或该协程在最终暂停点暂停,则行为未定义。同时恢复协程可能导致数据竞争。
2) 不做任何事。
在不同于协程暂停所在的执行代理上恢复协程拥有实现定义行为,除非每个执行代理都是由 std::thread 或 std::jthread 表示的线程,或执行 main
的线程。
参数
(无)
返回值
(无)
注解
在不同执行代理上恢复的协程应该处处避免依赖一致的线程同一性,例如跨过暂停点保有互斥体对象。
当前标准草案要求在从 std::noop_coroutine_handle 转换得到的 std::coroutine_handle<> 上调用 operator()
或 resume
亦为无操作,这是不可实现的,因为 std::noop_coroutine_handle 可以指代非无操作的协程或不指代协程。此为 LWG 问题 3460 。
示例
本节未完成 原因:暂无示例 |
参阅
(C++20) |
销毁协程 (公开成员函数) |