2014-06-05 36 views
2

是否有可能知道boost :: asio :: io_service事件循环中未决事件的数量?我正在查看reference,但没有看到任何此类功能。boost :: asio :: io_service事件循环中事件的数量

我正在寻找这样的功能来实现动态调整大小的线程池。如果可用,可以使用未决事件的数量来确定是否需要向池中添加更多线程。

+0

至少在Windows上,这是不可能与IOCP(并且应该没有必要,见安东的答案)。 – usr

回答

2

假设asio和你的应用程序都被正确写入,所以唯一的阻塞操作是在事件派发循环中,为什​​么你需要比可用硬件资源更多的线程?即如果线程不阻止超过预订不会带来任何性能改进。

因此,您可以创建一个固定大小的线程池,或者使用TBB这将创建它以供您处理任务(尽管TBB尚未设想用于阻止IO,因此不要使用TBB任务进行阻塞 - 等待)

+0

我知道拥有比可用硬件资源更多的线程对我来说不会有多大好处,那应该是我应该如何确定最大池大小,但是当没有很多要处理的事件并逐渐添加线程时达到最大数量,如果需要? – russoue

+0

按需创建线程。即当所有线程忙于处理任务时,请创建一个新的线程,直到达到限制 – Anton

相关问题