.NET线程池可以利用多CPU而不仅仅是多核CPU吗?

时间:2010-12-21 15:07:57

标签: .net cpu parallel-processing

我正在编写一个程序,它可以从并行运行多个进程中受益匪浅。我在拥有4个内核的i7 CPU上进行了测试,我发现单个2核机器的速度很快。

现在正在部署应用程序,本地IT人员正在考虑将具有2个CPU且每个具有4个核心的计算机组合在一起。这是一个.NET 4应用程序。你认为我基本上可以使用8个处理器还是只能使用4个处理器?

谢谢。

4 个答案:

答案 0 :(得分:6)

如果使用并行扩展而不限制配置中的处理器数量,它应该透明地使用所有可用的处理器/核心。

该框架不区分多核CPU和物理CPU。

答案 1 :(得分:3)

八。每个核心都是一个逻辑处理器。该框架并不太清楚您是使用单核8处理器还是双核四核处理器。

答案 2 :(得分:1)

你没有提到你正在使用哪个特定的Core i7芯片,但afaik核心i7有双插槽型号,在这种情况下它实际上是两个双核处理器,使其总共有4个核心。 是的,使用.Net框架编写的任何实现都可以使用所有可用内核(甚至超线程),因为它是由OS自动控制的(除非您的应用程序指定内核如何固定到CPU并使用cpu掩码)基于处理器的物理ID。)

答案 3 :(得分:0)

唯一不同的是CPU的物理位置 - 它们是在同一片硅片上吗?

可能可以区分它是否正在使用超线程(四核cpu具有超线程,因此暴露8“cpu”),但即便如此我怀疑它,框架可能只是看到8个CPU。

具有超线程的双四核系统因此可能会暴露出16个CPU。