【发布时间】:2013-06-23 13:27:11
【问题描述】:
对象 boost::asio::io_service 的方法 post() 方法是否使用 boost::coroutines 来执行在处理程序中执行的短任务队列?这可以节省使用线程时用于同步的资源,但无法将任务移动到另一个线程。还是没有意义?
【问题讨论】:
-
Boost.Coroutine 在 Boost 1.53 中被接受,Boost.Asio - 在 1.35 中。显然,后者不依赖于前者。
-
@Igor R. boost::asio 在 1.35 和 1.53 版本之间没有区别吗?为什么不在新版本中利用旧库中的新机会?
-
@Alex 您能否详细说明这将提供哪些优势?虽然协程非常适合在处理程序中构建异步调用链(以及 Boost.Asio 1.54 API 的一部分),但我很难理解内部事件循环调度的好处。
-
@Tanner Sansbury 我想我们的意思是一样的。不要在 post() 方法中使用协程,而是在调用 post() 设置的任务链的处理程序时使用。并且会在 boost::asio 1.54 中有机会控制它们的使用吗?例如,对于短任务 - 使用协程来减少同步开销,对于长任务 - 使用线程进行负载平衡。
标签: boost boost-asio