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)
 带重试的异步操作

详细描述

协程支持

协程和虚拟线程相关功能

类型定义说明

◆ coroutine_handle

template<typename Promise = void>
using coroutine_handle = std::coroutine_handle<Promise>

协程句柄

模板参数
Promisepromise类型

使用自定义coroutine_handle会编译失败, 故对std::coroutine_handle重新导出,用于管理协程的生命周期。 提供恢复、销毁等操作。

在文件 coroutine.hpp64 行定义.

函数说明

◆ noop_coroutine()

noop_coroutine_handle noop_coroutine ( )
inlinenoexcept

获取空操作协程句柄

返回
空操作协程句柄

空操作协程是一个特殊协程,永远不会完成,调用resume无效果。 可用于需要协程句柄但不需要实际协程的场景。

在文件 coroutine.hpp109 行定义.

被这些函数引用 task< T >::promise_type::final_awaiter::await_suspend().

◆ retry()

template<typename T, typename Factory>
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.hpp862 行定义.

引用了 current_exception(), is_invocable_r_v , 以及 rethrow_exception().

被这些函数引用 lock_free_queue< T >::try_pop().

◆ when_all()

template<typename... Tasks>
auto when_all ( Tasks &&... tasks) -> task< tuple< typename Tasks::promise_type::result_type... > >

等待所有任务完成

模板参数
Tasks任务类型
参数
tasks要等待的任务
返回
包含所有任务结果的任务

并行执行多个任务,等待所有任务完成后返回结果元组。

在文件 generator.hpp843 行定义.

引用了 forward().