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