![]() |
Home | Libraries | People | FAQ | More |
Start a new stackful coroutine, inheriting the executor of another.
template< typename Executor, typename StackAllocator, typename F, typename CompletionToken = default_completion_token_t<Executor>> auto spawn( const basic_yield_context< Executor > & ctx, allocator_arg_t , StackAllocator && stack_allocator, F && function, CompletionToken && token = default_completion_token_t< Executor >(), constraint_t< is_executor< Executor >::value||execution::is_executor< Executor >::value > = 0);
This function is used to launch a new stackful coroutine using the specified stack allocator.
Identifies the current coroutine as a parent of the new coroutine. This specifies that the new coroutine should inherit the executor of the parent. For example, if the parent coroutine is executing in a particular strand, then the new coroutine will execute in the same strand.
Denotes the allocator to be used to allocate the underlying coroutine's stack. The type must meet the StackAllocator requirements.
The coroutine function. The function must be callable the signature:
void function(basic_yield_context<Executor> yield);
The completion
token that will handle the notification that the coroutine
has completed. If the return type R
of function is void, the function signature of the
completion handler must be:
void handler(std::exception_ptr);
Otherwise, the function signature of the completion handler must be:
void handler(std::exception_ptr, R);
void(std::exception_ptr, R)
where R is the return type
of the function object.
The new thread of execution is created with a cancellation state that supports
cancellation_type::terminal values only. To change the cancellation
state, call the basic_yield_context member function
reset_cancellation_state.