Boost C++ Libraries

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

dispatch (1 of 3 overloads)
PrevUpHomeNext

Submits a completion token or function object for execution.

template<
    typename NullaryToken>
DEDUCED 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.

Parameters

token

The completion token that will be used to produce a completion handler. The function signature of the completion handler must be:

void handler();
Return Value

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);
    
Completion Signature
void()

PrevUpHomeNext