Boost C++ 库

...世界上最受推崇和专业设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

PrevUpHomeNext

spawn (6 个重载中的 3 个)

启动一个新的有栈协程,继承另一个执行器。

template<
    typename Executor,
    typename F,
    typename CompletionToken = default_completion_token_t<Executor>>
auto spawn(
    const basic_yield_context< Executor > & ctx,
    F && function,
    CompletionToken && token = default_completion_token_t< Executor >(),
    constraint_t< is_executor< Executor >::value||execution::is_executor< Executor >::value >  = 0);

此函数用于启动一个新的有栈协程。

参数

ctx

标识当前协程作为新协程的父协程。这指定新协程应继承父协程的执行器。例如,如果父协程在特定的 strand 中执行,则新协程将在同一 strand 中执行。

function

协程函数。该函数必须是可调用的,签名如下

void function(basic_yield_context<Executor> yield);
token

它将处理协程已完成的通知的完成令牌。如果 function 的返回类型 Rvoid,则完成处理程序的函数签名必须是

void handler(std::exception_ptr);

否则,完成处理程序的函数签名必须是

void handler(std::exception_ptr, R);
完成签名
void(std::exception_ptr, R)

其中 R 是函数对象的返回类型。

单操作取消

新的执行线程是使用仅支持 cancellation_type::terminal 值的取消状态创建的。要更改取消状态,请调用 basic_yield_context 成员函数 reset_cancellation_state


PrevUpHomeNext