在C ++中对等待相同阻塞操作的线程进行优先级排序的好方法是什么?

时间:2014-03-26 09:45:04

标签: c++ multithreading algorithm c++11 thread-priority

有一个阻塞队列。有一个相同的工作池,当某些东西被推送到队列时,它只是等待条件变量,并尝试从队列中弹出。假设队列包含任务。

在理想情况下,线程将统一弹出任务。我想对这种可能性添加一些偏见,这样每个工作人员都会按照优先顺序弹出一定数量的任务总量。但是,如果队列中有未处理的任务,则没有故意空闲的线程。

琐碎的例子。

有3个工作人员,111个任务,每秒一个任务进入队列。每项任务大约需要1秒钟才能完成处理。工人的优先级是10,1,100。然后工人们应该分别关于 10,1和100个任务。


使用标准条件变量和互斥量是否有方便的方法来实现这种机制? - 概率方法很好。

1 个答案:

答案 0 :(得分:2)

创建priority_queue个等待线程。将新任务添加到任务队列时,从priority_queue弹出最小线程以处理新任务。