用于计划任务的c ++多线程任务队列

时间:2010-07-17 22:01:44

标签: c++ multithreading scheduled-tasks

我需要开发一个执行预定任务的模块 每个任务都安排在X毫秒内执行。

模块将执行任务的工作线程数作为参数。

任务堆积在队列中,该队列可能是优先级队列,因此线程会检查下一个队列任务(具有最低“兑换”时间的任务),因此无需迭代每次所有任务。

是否有任何公共图书馆可以做到这一点,还是我应该自己动手?

注意:我在Windows上使用VC2008。

3 个答案:

答案 0 :(得分:5)

如果您不介意Boost依赖关系,threadpool可能符合您的需求。

答案 1 :(得分:3)

答案 2 :(得分:1)

只是为您的问题添加一些信息,您要求的是使用Earliest Deadline First算法的实时调度程序。另请注意,如果没有OS支持,您无法保证您的程序将在您指定的X毫秒期限内工作。操作系统总是可以决定在工作中间将您的任务交换掉CPU,这需要花费不可预测的时间才能完成。

如果您的应用程序严重依赖于您为其设置的X毫秒内的任务(或某些事情发生),则需要运行real-time operating system,而不是常规Windows。