在多个线程之间平衡负载

时间:2014-05-12 23:54:08

标签: c multithreading

对于我的学校作业,我需要在C中的多个线程之间平衡负载。例如,我需要在区间[0, 50]中计算整数的总和,平衡5个线程之间的负载(区间)和线程数只是一个例子,它们可能是更大的值)。我的第一个想法是将间隔分成5个较小的间隔,例如[0,10], [10,20]...[40,50]并将这些块中的每一个分配给一个特定的线程。但后来我怀疑计算区间[0,10]中整数之和是否与计算区间[40,50]中整数之和的负载相同,因为显然后一区间的数字更大,所以它让我想知道计算10x10与CPU的负载是否与100000x100000相同?我应该关注这件事吗?非常感谢您的亲切反馈。

P.S。英语不是我的第一语言,所以请原谅我的语法。

1 个答案:

答案 0 :(得分:2)

你应该非常担心。这是一个糟糕的设计。不仅某些时间间隔需要比其他时间间隔更多的工作,但由于各种特定于实现的原因,某些线程可能比其他时间点更快地进展。

所以不要为线程分配大量的工作。让线程获取块工作,然后在它们完成时再取一块。这种方法更有意义。

基本上,您需要完成一系列工作。线程将小型工作单元从队列中取出并重复,直到队列为空。