...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Submits a completion token or function object for execution.
template< typename NullaryToken> auto dispatch( NullaryToken && token);
This function submits an object for execution using the object's associated
executor. The function object may be called from the current thread prior
to returning from dispatch()
. Otherwise, it is queued for execution.
The completion token that will be used to produce a completion handler. The function signature of the completion handler must be:
void handler();
This function returns async_initiate<NullaryToken, void()>(Init{}, token)
,
where Init
is a function
object type defined as:
class Init { public: template <typename CompletionHandler> void operator()(CompletionHandler&& completion_handler) const; };
The function call operator of Init:
Obtains the handler's associated executor object ex
of type Ex
by performing
auto ex = get_associated_executor(handler);
Obtains the handler's associated allocator object alloc
by performing
auto alloc = get_associated_allocator(handler);
If execution::is_executor<Ex>::value
is true, performs
prefer(ex, execution::allocator(alloc)).execute( std::forward<CompletionHandler>(completion_handler));
If execution::is_executor<Ex>::value
is false, performs
ex.dispatch( std::forward<CompletionHandler>(completion_handler), alloc);
void()