Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我如何判断我的程序运行的机器是否使用超线程?(C)_C#_Hyperthreading - Fatal编程技术网

C# 我如何判断我的程序运行的机器是否使用超线程?(C)

C# 我如何判断我的程序运行的机器是否使用超线程?(C),c#,hyperthreading,C#,Hyperthreading,我有一些代码需要知道在我的特定机器上有多少实际内核可用,以及是否启用了超线程 在C语言中有这样做的方法吗 更新:这些机器是XP和Vista的混合体 更新:访问“Win32\u Processor.NumberOfCores”或“Win32\u Processor.NumberOfLogicalProcessors”会引发异常,其中一台计算机上未找到消息“ManagementException”,但并非所有计算机上都有此消息。System.Environment.ProcessorCount将告诉

我有一些代码需要知道在我的特定机器上有多少实际内核可用,以及是否启用了超线程

在C语言中有这样做的方法吗

更新:这些机器是XP和Vista的混合体


更新:访问“Win32\u Processor.NumberOfCores”或“Win32\u Processor.NumberOfLogicalProcessors”会引发异常,其中一台计算机上未找到消息“ManagementException”,但并非所有计算机上都有此消息。System.Environment.ProcessorCount将告诉您代码正在运行的计算机上存在多少个内核在上。

System.Environment.ProcessorCount将告诉您运行代码的计算机上存在多少个内核。

检查Environment.ProcessorCount属性,它将返回一个整数,我不确定是否为超读。

检查Environment.ProcessorCount属性,它将返回一个整数,但为超读,我不确定。

对第一个问题的简单回答至少是:Environment.ProcessorCount应该返回机器上的内核数


编辑:这是一种非基于WMI的方法,用于检查是否启用了超线程,但并不一定更好。另请参阅文章。

对第一个问题的简单回答至少是:Environment.ProcessorCount应返回机器上的内核数


编辑:这是一种非基于WMI的方法,用于检查是否启用了超线程,但并不一定更好。另请参阅文章。

在Vista及更高版本上,您可以通过PInvoke使用GetLogicalProcessorInformation来获取逻辑处理器单元的数量

在Windows XP上,无法通过C可靠地将超线程与其他多处理器/核心配置区分开来。有人发布的WMI解决方案将多核处理器归类为超线程


在Vista之前,唯一可靠的方法是检查处理器的CPUID。要使用它,您可以创建一个本机DLL,该DLL可以从托管代码中调用。以下英特尔代码将是一个很好的起点。

在Vista及更高版本上,您可以通过PInvoke使用GetLogicalProcessorInformation获取逻辑处理器单元的数量

在Windows XP上,无法通过C可靠地将超线程与其他多处理器/核心配置区分开来。有人发布的WMI解决方案将多核处理器归类为超线程

在Vista之前,唯一可靠的方法是检查处理器的CPUID。要使用它,您可以创建一个本机DLL,该DLL可以从托管代码中调用。以下英特尔代码将是一个很好的起点。

提供了您需要的信息

引用该问题的首要答案:

System.Environment.ProcessorCount
返回逻辑处理器的数量,请参阅

要区分超线程和独立内核,听起来好像需要一点WMI。

有您需要的信息

引用该问题的首要答案:

System.Environment.ProcessorCount
返回逻辑处理器的数量,请参阅

要区分超线程和独立内核,听起来好像需要一点WMI。

对于HT方面来说已经足够了,但遗憾的是,它只在XP SP3、64位XP/Vista/Server 2003中可用,我相信在Vista之前是有点坏的

虽然Mark Russinovich已经发布了他用它创建的工具Coreinfo,但它还没有发布源代码,很可能你可以对其进行反编译以查看代码。

对于HT方面来说已经足够了,但遗憾的是它只在XP SP3、64位XP/Vista/Server 2003中可用,我相信它在Vista之前已经有点崩溃了


虽然Mark Russinovich已经发布了他用它创建的工具Coreinfo,但它用c语言包装,但尚未发布源代码,很可能您可以对其进行反编译以查看代码。

链接似乎已断开。我认为HT将是2个逻辑处理器,1个物理和双核将显示2个逻辑和2个物理处理器。链接似乎断开了。我认为HT将显示2个逻辑处理器,1个物理和双核将显示2个逻辑和2个物理处理器。