有没有一种方法可以以平台无关的方式确定一台机器有多少个C/ c++内核?如果不存在这样的东西,如何确定每个平台(Windows/*nix/Mac)?
当前回答
OS X替代方案:根据文档,前面描述的基于[[NSProcessInfo processInfo] processorCount]的解决方案仅在OS X 10.5.0上可用。对于较早版本的OS X,使用Carbon函数MPProcessors()。
如果你是一个Cocoa程序员,不要被这是Carbon这个事实吓到。你只需要将Carbon框架添加到你的Xcode项目中,MPProcessors()就可以使用了。
其他回答
在linux上,据我所知,最好的编程方式是使用
sysconf(_SC_NPROCESSORS_CONF)
or
sysconf(_SC_NPROCESSORS_ONLN)
这些不是标准的,但是在我的Linux手册页中。
在Linux上,可以读取/proc/cpuinfo文件并计算核数。
Win32:
GetSystemInfo()获取逻辑处理器的数量,使用 GetLogicalProcessorInformationEx () 来获取物理处理器的数量。
你也可以在。net中使用WMI,但这样你就依赖于WMI服务的运行 等。有时它在本地工作,但当相同的代码在服务器上运行时就会失败。 我认为这是一个名称空间问题,与您正在读取其值的“名称”有关。
与c++无关,但在Linux上我通常这样做:
grep processor /proc/cpuinfo | wc -l
适用于bash/perl/python/ruby等脚本语言。