...one of the most highly
regarded and expertly designed C++ library projects in the
world. — Herb Sutter and Andrei
Start a new stackful coroutine that executes on a given execution context.
template< typename ExecutionContext, typename StackAllocator, typename F, typename CompletionToken = DEFAULT> DEDUCED spawn( ExecutionContext & ctx, allocator_arg_t , StackAllocator && stack_allocator, F && function, CompletionToken && token = DEFAULT, typename constraint< is_convertible< ExecutionContext &, execution_context & >::value >::type = 0);
This function is used to launch a new stackful coroutine.
Identifies the execution context that will run the stackful coroutine.
Denotes the allocator to be used to allocate the underlying coroutine's stack. The type must satisfy the stack-allocator concept defined by the Boost.Context library.
The coroutine function. The function must be callable the signature:
void function(basic_yield_context<Executor> yield);
token that will handle the notification that the coroutine
has completed. If the return type
void, the function signature of the
completion handler must be:
Otherwise, the function signature of the completion handler must be:
void handler(std::exception_ptr, R);
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