有没有办法以独立于平台的方式确定机器有多少来自C/C++的内核?如果不存在这样的事情,那么每个平台确定它(Windows/*nix/Mac)呢?
我正在编写一个小型C应用程序,它使用一些线程来处理数据.我希望能够知道某台机器上的处理器数量,而不使用system()和小脚本.
我能想到的唯一方法是解析/ proc/cpuinfo.任何其他有用的建议?
是否可以通过某些API或函数获取此类信息,而不是解析/proc/cpuinfo?
我正在将我的OCaml程序中的一些工作并行化(parmap但是)我宁愿不将核心数量硬编码到我的应用程序中.有没有办法在运行时获得核心数量?我宁愿不再添加任何依赖项(没有超出parmap或JS的core).我有一种感觉,我在stdlib看到一些简单的电话......
编辑:它不必是便携式的.在linux上工作已经足够了.
我曾尝试sysconf(_SC_NPROCESSORS_ONLN)和sysconf(_SC_NPROCESSORS_CONF),但他们都返回的总数(如英特尔CPU的文档中调用它)线(如:超线程线程),而不是物理核心(所谓的核心在提到英特尔网站).
有没有办法获得物理内核的数量,而不是逻辑?计数条目/proc/cpuinfo给出8,类似于调用sysconf,我的处理器是上面链接的.
我对Linux和BSD的解决方案很感兴趣,最好是以C API的形式.