C ++多线程:管理线程

时间:2016-12-12 11:50:10

标签: c++ multithreading

我有一个N个作业池,我希望有一个M(= CPU数)线程的恒定负载。我怎么能用C ++做到这一点?

我已经了解了C ++线程库的基础知识。最简单的方法是排队M个工作并等待所有工作完成。然后排队另外M个工作。只要有剩余的工作,就这样做。

只要每个作业/线程花费大约相同的时间,这种简单的方法就可以正常工作。如果不是这种情况,很容易发生一个长线程仍在工作而其他所有线程完成的情况。因此,只加载了M个CPU中的一个。

所以我需要一种线程管理。而不是等待所有线程,我必须不断检查正在运行的线程数,并在必要时将新的线程排入队列。

C ++中是否已经实现了类似的功能?否则,实现这样一个经理最简单/最聪明的方式是什么?

1 个答案:

答案 0 :(得分:0)

  

所以我需要一种线程管理。而不是等待所有线程,我必须不断检查正在运行的线程数,并在必要时将新的线程排入队列。

     

C ++中是否已经实现了类似的功能?

有一个Task Scheduler in Intel Thread Building blocks library,可以高效地将用户任务负载平衡到可用的CPU上。