Boost C++ Libraries of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards


spawn (3 of 13 overloads)

Start a new stackful coroutine, inheriting the executor of another.

    typename Executor,
    typename F,
    typename CompletionToken = DEFAULT>
DEDUCED spawn(
    const basic_yield_context< Executor > & ctx,
    F && function,
    CompletionToken && token = DEFAULT,
    typename constraint< is_executor< Executor >::value||execution::is_executor< Executor >::value >::type  = 0);

This function is used to launch a new stackful coroutine.



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.


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);
Completion Signature
void(std::exception_ptr, R)

where R is the return type of the function object.

Per-Operation Cancellation

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.