【发布时间】:2018-05-20 03:17:04
【问题描述】:
目前,我正在尝试将通过post 或dispatch 排队的工作删除到io_context。工作由少量排队者组排队,工作应一次性全部移除:
boost::asio::io_context context;
auto work = [] {
// ...
};
boost::asio::post(context, std::move(work));
// ... now I want to remove the work
asio库有没有提供这样的功能?
目前我正在处理的应用程序正在使用一个线程池,该线程池从多个线程调用io_context::run()。
我的想法是我可以创建多个由线程池调度的io_contexts,这样一个io_context 代表一个可以通过io_context::stop() 删除的组。所有io_contexts 都将保存在一个列表中,然后汇集起来用于未完成的事件。
但是,我认为汇集或等待许多 io_contexts 可能会导致性能问题。
有不同的解决方案吗?
【问题讨论】:
-
您检查过
${boost_root}/libs/asio/example/cpp11/executors/pipeline.cpp吗?我认为您不需要超过一个io_context。
标签: c++ asynchronous boost boost-asio event-loop