Boost C++ 库

...世界上最受推崇、设计最精良的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ Coding Standards

dispatch (7 个重载中的第 6 个) - Boost C++ 函数库
PrevUpHomeNext

将一个函数提交到指定的执行上下文中运行,并在完成后提交完成处理程序。

template<
    typename Function,
    typename ExecutionContext,
    typename NullaryToken = default_completion_token_t<typename ExecutionContext::executor_type>>
auto dispatch(
    Function && function,
    ExecutionContext & ctx,
    NullaryToken && token = default_completion_token_t< typename ExecutionContext::executor_type >(),
    constraint_t< is_void< result_of_t< decay_t< Function >()> >::value >  = 0,
    constraint_t< is_convertible< ExecutionContext &, execution_context & >::value >  = 0);
参数

函数

将在目标执行器上执行的空参数函数。

ctx

执行上下文,从中获取目标执行器。

标记

将用于生成完成处理程序的 完成令牌。完成处理程序的函数签名必须是

void handler();
返回值

dispatch(forward<Function>(function), ctx.get_executor(), forward<NullaryToken>(token)).

备注

如果函数对象抛出异常,该异常允许传播到目标执行器。此情况下的行为取决于执行器。例如,io_context 将允许异常传播到运行 io_context 的调用者,而 thread_pool 将调用 std::terminate

完成签名
void()

PrevUpHomeNext