【发布时间】:2014-04-25 18:38:04
【问题描述】:
我第一次使用并行任务,而不是使用传统的线程池。在我的应用程序中,我允许用户输入开始完成工作的任务数。 (工作可能非常大)。我注意到,如果我允许超过 10 个左右的任务,应用程序就会开始挂起,并且由于使用的资源,我实际上会得到更差的性能。
我想知道处理器数量和最大任务数量之间是否存在任何相关性,以便我可以限制用户电脑的最大任务数量,以免减慢速度。
【问题讨论】:
-
我想这取决于你的线程在做什么。磁盘 I/O 访问?内存计算?通常,在编译库时,我总是在一台机器上使用最多 2* 数量的处理内核,但通常对于任何内置线程任务,我倾向于坚持使用 1 对 1 与 cpu 内核。
-
我的一般规则是从 1.5/2 个高 CPU 线程到处理单元开始。这通常对我来说效果很好,但取决于实际的代码和硬件。运行一些测试并保持灵活性。
-
您的意思是“每 2 个处理单元 1.5 个 CPU 密集型线程”还是“每个处理单元 1.5 到 2 个 CPU 密集型线程”?
-
@JonofAllTrades 后一种情况。
标签: c# .net parallel-processing task-parallel-library