关于 Environment.ProcessorCount 的问题

11

我很好奇.NET 属性 Environment.ProcessorCount 到底返回什么。它会返回核心数量还是处理器数量,还是两者都有?如果我的电脑有2个拥有4个核心的处理器,Environment.ProcessorCount 会返回2、4还是8?


2
请查看以下链接:https://dev59.com/Q3VC5IYBdhLWcg3wxEN1 - adrianbanks
3个回答

17

它将返回NUMBER_OF_PROCESSORS环境变量。(请参见MSDN)

这将等于逻辑核心数 - 例如,如果您有启用超线程的单核处理器,则会返回2。

在您的情况下,它应该返回8。

它将与任务管理器中看到的CPU利用率图表数量相同。


这完全是错误的。如果您更改环境变量,然后从与更改变量相同的环境启动应用程序,则仍将获得逻辑处理器的实际数量。顺便说一下:在某些情况下,这并不总是正确的 - 与超线程相关的情况(Environment.ProcesserCount 在我们拥有的某个服务器上不考虑超线程)。 - Eric Ouellet
我很快就行动了。我试图撤销,但我无法做到。我在MSDN中没有看到这些信息,事实上当我检查时它并不存在。但是一个小时后我意识到它在框架的4.0版本中出现了,但是你的链接可能已经自动重定向到了4.5。我无法撤销! - Eric Ouellet

4
它返回逻辑处理器的数量,所以在您的示例中为8。

0
如果我的电脑有两个处理器,每个处理器有4个内核,那么Environment.ProcessorCount会返回2、4还是8呢?
在我的情况下,它会返回8。(Core i7 860 CPU)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接