Concurrency 并发编程作用于数组中的每个元素

Concurrency 并发编程作用于数组中的每个元素,concurrency,parallel-processing,Concurrency,Parallel Processing,我有一个关于并行编程的问题。如果我有一个程序作用于数组的每个元素,为什么使用所有可用的处理器不是很有利 我在想,可能是因为设置和管理多个线程的开销很大,或者如果阵列大小不保证并发解决方案的话。还有谁能想到别的吗 我会使该数组成为一个静态变量,根据它的大小,我会划分任务并分配多个踏板来执行数组中每组元素的工作 例如,如果数组中有100个元素。我会把它分成10组。 用10条不同的线我就能完成我的工作 如果我不明白你的意思,请纠正我 编辑:- 操作系统已经为您做到了这一点。它不能保证每个线程永远都在同

我有一个关于并行编程的问题。如果我有一个程序作用于数组的每个元素,为什么使用所有可用的处理器不是很有利


我在想,可能是因为设置和管理多个线程的开销很大,或者如果阵列大小不保证并发解决方案的话。还有谁能想到别的吗

我会使该数组成为一个静态变量,根据它的大小,我会划分任务并分配多个踏板来执行数组中每组元素的工作

例如,如果数组中有100个元素。我会把它分成10组。 用10条不同的线我就能完成我的工作

如果我不明白你的意思,请纠正我

编辑:-
操作系统已经为您做到了这一点。它不能保证每个线程永远都在同一个内核上(在几乎所有的情况下,也没有必要这样做),但它会尽可能让多个内核保持忙碌。这意味着尽可能多地为所有可用线程提供自己的核心。
注意:-不保证程序线程和操作系统线程之间的直接关联,至少根据.net:


希望这有点道理。

一些处理器可能已经在忙于做重要的事情,或者您可能想留下备用容量,以防它们需要快速响应新的工作负载。例如,在一个有8个处理器的桌面系统中,您可能希望保留1个处理器以保持UI的响应性,而在其他处理器上分叉7个“批处理”线程。在非UI系统中,您可能仍然希望保持一个或多个内核监听操作系统中断或执行网络IO


一个特别令人沮丧的例子是在所有内核上启动并行计算,发现在启动之前应该调整参数,无法中断计算,因为没有多余的计算能力,用户界面无法响应您的“取消”按钮。

我知道最好的方法是什么。但讲师提出了这样一个问题:“如果我有一个程序作用于数组的每一个元素,为什么使用所有可用的处理器并不有利?”answer@user3036237检查我编辑的答案,如果它有意义,那么你可以投赞成票。