我需要建立一个具有调度优先级的线程池:所有正在运行的线程在 CPU 时间和操作系统优先级方面具有相同的优先级,但是当需要选择下一个要完成的任务时,具有最高优先级的线程首先执行。
我决定尝试 boost::asio,因为它有一个看起来不错的线程池。我查看了asio 文档中的优先处理程序示例,但我不喜欢它,因为它不限制线程数,而且我必须手动安排任务。我需要的是从队列中获取任务的固定数量的线程,因此我可以在我的应用程序中创建单个池,然后在应用程序生命周期中的任何时间添加任务。
当任务完成时,从 asio::io_service 获得一些通知就足够了;该通知的处理程序可以找到具有最高优先级的下一个任务,并将其发布到服务。
那可能吗?