2011-01-31 163 views
5

我正在使用boost :: asio(不经意的传输方案)实现一组简单的协议。它们在运行时受CPU限制。为了提高效率,我想尽量让两台主机尽可能地工作。如果主机A可以在执行两个任务之间进行选择,其中一个任务可以让主机B开始计算,而另一个则不会,我希望主机A选择前者。如何强制boost :: asio优先处理完成async_write调用而不是运行其他处理程序?

当前,io_service在async_writes之前正在运行计算密集型处理程序。除非tcp窗口已满(或者某些类似的情况阻止将数据写入socker),否则几乎肯定会更好地完成async_write而不是运行其他处理程序。

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

回答

3

在说明如何将优先级附加到完成处理程序的文档中,有an example。您将不需要重新实现async_write,只需实施您自己的handler_priority_queue类的示例。

+0

我看到了这个例子。我不明白如何将优先级附加到async_write。由于写入是异步的,我相信有一些完成处理程序被称为async_write的内部处理程序。如果是这样,我需要提高他们的优先。 – Amy 2011-01-31 20:05:17

相关问题