如何通过运行其他处理程序强制boost :: asio优先完成async_write调用?

Amy*_*Amy 5 c++ boost boost-asio

我正在使用boost :: asio(不经意的传输方案)实现一组简单的协议.它们在运行时受CPU限制.为了提高效率,我想尽量让两台主机都能正常工作.如果主机A可以在预先形成两个任务之间做出选择,其中一个将让主机B开始计算,而另一个则不允许,我希望主机A选择前者.

目前,io_service在async_writes之前运行计算密集型处理程序.除非tcp窗口已满(或某些类似条件阻止向socker写入数据),否则完成async_write几乎肯定会更好,而不是运行其他处理程序.

我见过asio的处理程序优先级队列示例.重新实现async_write以使用这样的优先级队列是解决我问题的唯一方法吗?

Sam*_*ler 4

文档中有一个示例,描述了如何为完成处理程序附加优先级。您不需要重新实现,只需从示例中async_write实现您自己的类版本即可。handler_priority_queue