在我的学校作业中,我需要平衡C中多线程之间的负载。例如,我需要计算间隔[0, 50]中整数的总和,平衡5个线程之间的负载(线程的间隔和数量只是一个例子,它们的值可能要大得多)。我的第一个想法是将间隔分成5个较小的部分,例如[0,10], [10,20]...[40,50],并将其中的每个块分配给一个特定的线程。但是,我对计算区间0,10中的整数之和是否与在区间[40,50]中计算整数之和的工作量是相同的,因为很明显后一段时间内的数字更大,所以我想知道计算10x10是否与100000x100000相同?我该担心这个吗?您的好意反馈将不胜感激。
英语不是我的第一语言,所以请原谅我的语法。
发布于 2014-05-13 00:01:35
你应该非常关心。这设计太差了。不仅某些时间间隔比其他时间间隔需要更多的工作,而且由于各种具体的实现原因,一些线程可能比其他线程更快地向前推进。
所以不要将大量的工作分配给线程。让线程接受小块的工作,然后在它们完成后再取另一个块。这种做法更有意义。
本质上,您有一个需要完成的工作队列。线程将小的工作单元从队列中取出并重复,直到队列为空。
https://stackoverflow.com/questions/23620743
复制相似问题