当前位置: 首页 > 知识库问答 >
问题:

c#环境。ProcessorCount并不总是返回完整的逻辑处理器数,为什么?

曾高杰
2023-03-14

在我的机器上,windows 7-Enterprise与1 x Intel Xeon E5-1660 0@3.30Ghz(6核/cpu与超线程激活),Environment.ProcessorCount返回12这是确切的。

在Windows Server 2012上,配备2个英特尔至强E5-2697 v3 @ 2.60GHz (14个内核/cpu,激活超线程(我想是因为任务管理器显示:2个插槽,28个内核,56个逻辑处理器)),环境。ProcessorCount返回28,这在我们看来是错误的,因为2x14x2 = 56。

为什么在Windows Server 2012 c#方法环境下。ProcessorCount没有返回正确数量的逻辑处理器?

作为附加信息,环境变量如下:NUMBER_OF_PROCESSORS=28

2015年5月26日更新:

在我的另一个问题中有关于这个相关错误的更多细节/原因:在一个C#应用程序中不能为我的线程使用多个处理器组。主要我觉得C#确实只用了一个处理器组。我们的服务器上有两个处理器组,尽管只有56个逻辑处理器。但是这份惠普客户咨询解释了为什么我们的服务器bios配置会导致windows出错。

共有3个答案

田英卓
2023-03-14

检查系统NUMBER_OF_PROCESSORS环境变量。这就是方法返回的结果。请参阅MSDN文章:http://msdn.microsoft.com/en-us/library/system.environment.processorcount(v=vs.100)。aspx(权限部分)。

沈乐邦
2023-03-14

根据MSDN的文件

<configuration>
   <runtime>
      <Thread_UseAllCpuGroups enabled="true"/>
      <GCCpuGroup enabled="true"/>
      <gcServer enabled="true"/>
   </runtime>
</configuration>
萧琛
2023-03-14

文档中可能有提示:

如果当前计算机包含多个处理器组,此属性返回公共语言运行库(CLR)可用的逻辑处理器数量

这可能是这里的问题吗?

MSDN文章

发现了其他有趣的东西:

默认情况下,池限制为单个处理器组(http://msdn.microsoft.com/en-us/库/窗口/桌面/dd405503(v=vs.85).aspx),因此限制为 64 个内核。但是,在 .NET 4.5 中,您可以设置Thread_UseAllCpuGroups启用 = “true” 标志。

默沙东论坛帖子

 类似资料:
  • 问题内容: 为什么这些逻辑运算符返回一个对象而不是布尔值? 我想了解为什么它返回(如果已定义)OR的结果,而不返回布尔结果。 问题答案: 将返回布尔值。 更新 请注意,这是基于我的测试。我不会被完全依赖。 它是一个 不 赋值或 不 赋值的表达式。而是分配计算的值。 让我们看一下这个表达式。 表达式示例: 您的表情: 另一个表达: 另一个表达:

  • 我正在尝试将csv文件导入R,我可以通过以下方式做到这一点 从这里,我试图计算平均值、均方差、标准误差、t统计量和p值。我被教导使用: 然而,当我尝试使用其中任何一个时,我会得到一个错误: 警告消息:In mean.default(Lab2x):参数不是数字或逻辑:返回NA 我做错了什么/错过了什么?

  • 我正在尝试从16位架构中读取二进制16位机器指令(其确切性质在这里无关紧要),并将它们打印回十六进制值。在C中,我发现这很简单,方法是使用函数将16位读入。 我想我会尝试在Rust中复制。如果我能提前知道被读入的变量的确切大小,这似乎是相当微不足道的,而且我专门为16位工作。 我决定尝试使函数在各种内置无符号整数类型上通用。为此,我使用Num crate中的一些特征提出了以下函数: 问题是当我在m

  • 问题内容: 在Java中,hashcode()方法返回整数而不是long。有什么具体原因吗? 问题答案: 那么,一个良好的理由是,基于数据结构(,)使用一个数组来存储箱,并且阵列被限制为索引。 如果必须将其映射到数组索引,那么您将一无所获。

  • 问题内容: 我能够成功获取经/纬度并将其传递给地址解析器以获取地址。但是,我并不总是找回地址。似乎需要尝试几次?我不知道为什么。 此时我是否有更好的方法来获取地址? 我在这里调用此方法: 问题答案: 根据我的经验,Google Geocoder并非总是能正常工作,我在地图上有几个固定点,当我点击叠加层时,它会弹出带有该经度/纬度地址的祝酒词,这些点不会改变,有时我在同一点上单击10次,但我只得到其

  • 我试图批量插入一个表,然后用新生成的s读回完整的对象。 然而,这个方法给了我以下错误:。请参阅下面的堆栈跟踪。 如果我只想批量插入而不回读,一切都会好起来的。那我就用 但是,我还需要用插入的值的s读回它们,但不确定我可以使用什么方法。 TLDR:我想批量插入,然后使用读取插入的行,但找不到正确的方法。是否在单个方法中提供批量插入和选择?