我需要一种可靠的方法来检测计算机上有多少cpu核心.我正在创建一个数字密集的模拟C#应用程序,并希望创建最大数量的运行线程作为核心.我尝试了很多围绕互联网建议的方法,比如Environment.ProcessorCount,使用WMI,这段代码:
http://blogs.adamsoftware.net/Engine/DeterminingthenumberofphysicalCPUsonWindows.aspx他们似乎都不认为AMD X2有两个内核.有任何想法吗?
编辑:似乎Environment.ProcessorCount返回正确的数字.它位于具有超线程的英特尔cpu上,返回错误的数字.超线程的核心是2,当它应该只有1时.
解决方法
见
Detecting the number of processors
或者,使用GetLogicalProcessorInformation()Win32 API:http://msdn.microsoft.com/en-us/library/ms683194(VS.85).aspx