【发布时间】:2014-04-17 17:00:41
【问题描述】:
我应该什么时候为任务分配一个新线程?
我有一项任务是计算 100k 个方程并将结果存储到一个数组中,第二个任务是对其进行排序。考虑到我将其设为线程安全代码,我应该坚持使用 2 个线程,还是可以分配 3 个线程来计算 100k 方程的三分之一和第四个线程来处理排序?还是只有 2 个线程?
另外,我有一个 4 核处理器,如果我将具有 4 个线程的程序带到另一台具有 2 个内核的计算机上会发生什么?
谢谢!
【问题讨论】:
-
听起来你应该尝试一下并对其进行分析。
-
“另外,我有一个 4 核处理器,如果我将具有 4 个线程的程序带到另一台具有 2 个内核的计算机上会发生什么?”不会发生任何异常情况,您只需在双核 CPU 上运行 4 个线程,而不是在四核 CPU 上运行 4 个线程。
-
每个线程的进度频率将减半(我假设)。
-
我强烈推荐你去阅读来自微软的免费电子书“Patterns for Parallel Programming”,它解释了很多概念,当你刚接触线程时很容易知道。例如,根据方程式所做的工作,您可能在线程中做的工作太少,并且开销成本最终会使它比您在一个线程上完成所有 100K 时运行得更慢。
标签: c# multithreading performance