是否有可能知道boost :: asio :: io_service事件循环中未决事件的数量?我正在查看reference,但没有看到任何此类功能。boost :: asio :: io_service事件循环中事件的数量
我正在寻找这样的功能来实现动态调整大小的线程池。如果可用,可以使用未决事件的数量来确定是否需要向池中添加更多线程。
是否有可能知道boost :: asio :: io_service事件循环中未决事件的数量?我正在查看reference,但没有看到任何此类功能。boost :: asio :: io_service事件循环中事件的数量
我正在寻找这样的功能来实现动态调整大小的线程池。如果可用,可以使用未决事件的数量来确定是否需要向池中添加更多线程。
假设asio和你的应用程序都被正确写入,所以唯一的阻塞操作是在事件派发循环中,为什么你需要比可用硬件资源更多的线程?即如果线程不阻止超过预订不会带来任何性能改进。
因此,您可以创建一个固定大小的线程池,或者使用TBB这将创建它以供您处理任务(尽管TBB尚未设想用于阻止IO,因此不要使用TBB任务进行阻塞 - 等待)
至少在Windows上,这是不可能与IOCP(并且应该没有必要,见安东的答案)。 – usr