启动一个新的有栈协程,继承另一个执行器。
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);
此函数用于启动一个新的有栈协程。
标识当前协程作为新协程的父协程。这指定新协程应继承父协程的执行器。例如,如果父协程在特定的 strand 中执行,则新协程将在同一 strand 中执行。
协程函数。该函数必须是可调用的,签名如下
void function(basic_yield_context<Executor> yield);
它将处理协程已完成的通知的完成令牌。如果 function
的返回类型 R
是 void
,则完成处理程序的函数签名必须是
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
。