c - 在多个线程之间均衡负载

标签 c multithreading

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

附注英语不是我的母语,所以请原谅我的语法。

最佳答案

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

因此,不要将大量工作分配给线程。让线程执行 block 工作,然后在完成后执行另一 block 工作。这种方法更有意义。

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

关于c - 在多个线程之间均衡负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23620743/

相关文章:

c - 解析一个结构体以从结构体数组中运行

c++ - 限制 Concurrency::parallel_for 中使用的线程数

java - 调用(在)新线程的最有效方式

c - 链表问题

c - 使用\r 覆盖标准输出中的上一行

c - 关于c中标记化的问题

c++ - 这段代码线程安全吗?如果不是什么时候以及怎么会出错?

c - Linux 缓冲区溢出环境变量

c++ - 以原子方式读取非原子变量?

c++ - 为什么我的多线程作业队列崩溃?