...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 Executor, typename CompletionToken = DEFAULT> DEDUCED post( const Executor & ex, CompletionToken && token = DEFAULT, typename constraint< execution::is_executor< Executor >::value||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 post()
.
The use of post()
, rather than defer
, indicates the caller's preference that the function object be eagerly
queued for execution.
This function has the following effects:
Handler
,
initialized with handler(forward<CompletionToken>(token))
.
result
of type async_result<Handler>
,
initializing the object as result(handler)
.
ex1
by
performing get_associated_executor(handler)
.
w
by performing make_work(ex1)
.
alloc
by performing get_associated_allocator(handler)
.
f
with a function call operator
that performs ex1.dispatch(std::move(handler), alloc)
followed by w.reset()
.
Executor(ex).post(std::move(f), alloc)
.
result.get()
.