|
NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
|
协程支持 更多...
类 | |
| struct | coroutine_traits< Res, Args > |
| 协程特征主模板 更多... | |
| struct | suspend_always |
| 始终暂停的等待器 更多... | |
| struct | suspend_never |
| 从不暂停的等待器 更多... | |
| class | cancellation_token |
| 取消令牌 更多... | |
| class | generator< T > |
| 懒序列生成器 更多... | |
| class | task< T > |
| 异步任务 更多... | |
| class | task< void > |
| void特化的任务类 更多... | |
| struct | virtual_thread_task |
| 虚拟线程任务 更多... | |
| class | virtual_thread_scheduler |
| 虚拟线程调度器 更多... | |
| struct | virtual_thread_awaiter |
| 虚拟线程等待器 更多... | |
| class | virtual_thread |
| 虚拟线程类 更多... | |
类型定义 | |
| template<typename Promise = void> | |
| using | coroutine_handle = std::coroutine_handle<Promise> |
| 协程句柄 | |
| using | noop_coroutine_promise = std::noop_coroutine_handle |
| 空操作协程的promise类型别名 | |
| using | noop_coroutine_handle = coroutine_handle<noop_coroutine_promise> |
| 空操作协程句柄类型别名 | |
函数 | |
| noop_coroutine_handle | noop_coroutine () noexcept |
| 获取空操作协程句柄 | |
| template<typename... Tasks> | |
| auto | when_all (Tasks &&... tasks) -> task< tuple< typename Tasks::promise_type::result_type... > > |
| 等待所有任务完成 | |
| template<typename T, typename Factory> | |
| task< T > | retry (Factory &&factory, const size_t max_attempts, function< bool(const exception_ptr &)> should_retry=nullptr) |
| 带重试的异步操作 | |
协程支持
协程和虚拟线程相关功能
| using coroutine_handle = std::coroutine_handle<Promise> |
协程句柄
| Promise | promise类型 |
使用自定义coroutine_handle会编译失败, 故对std::coroutine_handle重新导出,用于管理协程的生命周期。 提供恢复、销毁等操作。
在文件 coroutine.hpp 第 64 行定义.
|
inlinenoexcept |
获取空操作协程句柄
空操作协程是一个特殊协程,永远不会完成,调用resume无效果。 可用于需要协程句柄但不需要实际协程的场景。
在文件 coroutine.hpp 第 109 行定义.
被这些函数引用 task< T >::promise_type::final_awaiter::await_suspend().
| task< T > retry | ( | Factory && | factory, |
| const size_t | max_attempts, | ||
| function< bool(const exception_ptr &)> | should_retry = nullptr ) |
带重试的异步操作
| T | 结果类型 |
| Factory | 工厂函数类型 |
| factory | 返回task<T>的工厂函数 |
| max_attempts | 最大尝试次数 |
| should_retry | 判断是否应该重试的函数 |
执行异步操作,失败时根据策略重试。
在文件 generator.hpp 第 862 行定义.
引用了 current_exception(), is_invocable_r_v , 以及 rethrow_exception().
被这些函数引用 lock_free_queue< T >::try_pop().
| auto when_all | ( | Tasks &&... | tasks | ) | -> task< tuple< typename Tasks::promise_type::result_type... > > |
等待所有任务完成
| Tasks | 任务类型 |
| tasks | 要等待的任务 |
并行执行多个任务,等待所有任务完成后返回结果元组。
在文件 generator.hpp 第 843 行定义.
引用了 forward().