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 (2 of 3 overloads)
PrevUpHomeNext

Submits a completion token or function object for execution.

template<
    typename Executor,
    typename CompletionToken>
DEDUCED dispatch(
    const Executor & ex,
    CompletionToken && token,
    typename enable_if< is_executor< Executor >::value >::type *  = 0);

This function submits an object for execution using the specified executor. The function object is queued for execution, and is never called from the current thread prior to returning from dispatch().

This function has the following effects:

  • Constructs a function object handler of type Handler, initialized with handler(forward<CompletionToken>(token)).
  • Constructs an object result of type async_result<Handler>, initializing the object as result(handler).
  • Obtains the handler's associated executor object ex1 by performing get_associated_executor(handler).
  • Creates a work object w by performing make_work(ex1).
  • Obtains the handler's associated allocator object alloc by performing get_associated_allocator(handler).
  • Constructs a function object f with a function call operator that performs ex1.dispatch(std::move(handler), alloc) followed by w.reset().
  • Performs Executor(ex).dispatch(std::move(f), alloc).
  • Returns result.get().

PrevUpHomeNext