我正在使用boost :: asio(不经意的传输方案)实现一组简单的协议。它们在运行时受CPU限制。为了提高效率,我想尽量让两台主机都能正常工作。如果主机A可以在执行两个任务之间做出选择,其中一个任务将让主机B开始计算,而另一个则不允许,我希望主机A选择前者。
目前,io_service在async_writes之前运行计算密集型处理程序。除非tcp窗口已满(或某些类似条件阻止向socker写入数据),否则完成async_write几乎肯定会更好,而不是运行其他处理程序。
我见过asio的处理程序优先级队列示例。重新实现async_write以使用这样的优先级队列是我问题的唯一解决方案吗?
答案 0 :(得分:3)
文档中有an example描述如何将优先级附加到完成处理程序。您不需要重新实现async_write
,只需从示例中实现您自己的handler_priority_queue
类版本。