对于我的学校作业,我需要在C中的多个线程之间平均地平衡负载。例如,我需要计算[0, 50]
区间中整数的总和,以平均地在5个线程之间平衡负载(间隔和线程数只是一个例如,它们可以是更大的值)。我的第一个想法是将间隔分成5个较小的间隔,例如[0,10], [10,20]...[40,50]
并将这些块中的每一个分配给一个特定线程。但是随后我对计算间隔[0,10]中的整数和是否与计算[40,50]
间隔中的整数和是否负担相同感到怀疑,因为显然后一个间隔中的数字更大,所以这使我感到困惑。想知道计算10x10是否与100000x100000的CPU负载相同?我应该为此担心吗?您的宝贵意见将不胜感激。
P.S.英语不是我的母语,所以请原谅我的语法。
最佳答案
您应该非常关注。这是一个糟糕的设计。不仅某些间隔可能比其他间隔需要更多的工作,而且由于各种特定于实现的原因,某些线程可能比其他线程更快地进行前进。
因此,请勿将大量工作分配给线程。让线程占用一小部分工作,然后在完成时再占用另一块工作。这种方法更有意义。
本质上,您需要完成一系列工作。线程使小型工作单元脱离队列,并重复执行直到队列为空。
关于c - 均衡多个线程之间的负载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23620743/