以编程方式查找计算机上的内核数(active processor cores bios)

有没有一种方法来确定一台机器有多少核心从 C / C ++ 在一个独立的平台的方式?

有没有一种方法来确定一台机器有多少核心从 C / C ++ 在一个的平台的方式?

817

C++ 11

#include <thread>
//may return 0 when not able to detect
const auto processor_count = std::thread::hardware_concurrency();

参考:std::thread::hardware_concurrency

在 C ++ 11 之前的 C ++ 中,没有可移植的方法。相反,您需要使用以下一种或多种方法(由适当的#ifdef行保护):

Win32

SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
int numCPU = sysinfo.dwNumberOfProcessors;

Linux 、 Solaris 、 AIX 和 Mac OS X & gt;= 10.4(即从 Tiger 开始)

int numCPU = sysconf(_SC_NPROCESSORS_ONLN);

FreeBSD 、 MacOS X 、 NetBSD 、 OpenBSD 等。

int mib[4];
int numCPU;
std::size_t len = sizeof(numCPU); 
/* set the mib for hw.ncpu */
mib[0] = CTL_HW;
mib[1] = HW_AILCPU;  // alternatively, try HW_NCPU;
/* get the number of CPUs from the system */
sysctl(mib, 2, &numCPU, &len, NULL, 0);
if (numCPU < 1) 
{
    mib[1] = HW_NCPU;
    sysctl(mib, 2, &numCPU, &len, NULL, 0);
    if (numCPU < 1)
        numCPU = 1;
}

HPUX

int numCPU = mpctl(MPC_GETNUMSPUS, NULL, NULL);

IRIX

int numCPU = sysconf(_SC_NPROC_ONLN);

Objective-C(Mac OS X & gt;= 10.5 或 iOS)

NSUInteger a = [[NSProcessInfo processInfo] processorCount];
NSUInteger b = [[NSProcessInfo processInfo] activeProcessorCount];
223

此功能是 C ++ 11 标准的一部分。

#include <thread>
unsigned int nthreads = std::thread::hardware_concurrency();

对于较旧的编译器,可以使用Boost.Thread库。

#include <boost/thread.hpp>
unsigned int nthreads = boost::thread::hardware_concurrency();

在任何一种情况下,hardware_concurrency()都会根据 CPU 内核和超线程单元的数量返回硬件能够并发执行的线程数。

65

OpenMP在许多平台(包括 Visual Studio 2005)上受支持,它提供了

int omp_get_num_procs();

函数,该函数返回调用时可用的处理器 / 内核数。

39

如果您具有汇编语言访问权限,则可以使用 CPUID 指令获取有关 CPU 的各种信息。它可以在操作系统之间移植,尽管您需要使用制造商特定的信息来确定如何查找内核数量。这里的a document that describes how to do it on Intel chipsthis one的第 11 页描述了 AMD 规范。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(758)
Slack API并发送包含视频的消息
上一篇
了解 Etc/GMT时区
下一篇

相关推荐

  • ios手机玩pc游戏的模拟器让你的手机玩起来!

    iOS手机玩PC游戏的模拟器是一种可以在iOS设备上运行PC游戏的软件。它使用模拟器技术,将PC游戏文件转换为iOS可识别的格式,然后在iOS设备上运行。…

    2023-01-05 01:44:37
    0 13 19
  • twitch下载ios:在App Store上下载Twitch,让你的手机体验更强大!

    Twitch是一款流媒体游戏平台,可以在iOS设备上运行。要下载Twitch iOS应用程序,请执行以下步骤:打开App Store应用程序,然后搜索“Twitch”。…

    2023-02-07 15:34:55
    0 85 58
  • curiosity的读音探索无限可能性的力量

    示例示例的读音是/kjʊəˈrɪəsəti/,代码示例如下:…

    2023-01-16 10:40:55
    0 19 20
  • ios cad制图软件从初学者到专家

    iOS CAD制图软件是一种专为iOS设备开发的CAD(Computer-Aided Design)软件,它可以帮助用户快速、轻松地创建2D和3D图形。它提供了一系列的工具,如绘图、测量、建模、渲染和编辑,可以帮助用户快速完成设计任务。此外,它还支持多种格式的文件导入和导出,可以方便地与其他CAD软件进行协作。…

    2023-02-05 02:07:31
    0 69 62
  • 节奏大师ios:AKFrequencyTracker与节奏

    关于节奏大师ios的问题,在tempo tracker中经常遇到,使用 AKFrequencyTracker 时,我喜欢添加“节奏”功能,以根据音符的节奏和惊奇来识别音符…

    2022-12-21 14:10:40
    0 98 46
  • 清除域代码:如何在iOS中清除特定域的Cookie

    关于清除域代码的问题,在ios clear cookies中经常遇到,我已经在 StackOverflow 上搜索了几乎所有问题以获取我的问题的答案。我还没有找到任何有用的链接或教程说哪种方式最好清除特定域的 cookie。所以请如果有人可以帮助我。…

    2022-12-11 15:54:40
    0 69 35
  • 解除程序占用:iOSVoiceOver崩溃(消息发送到已解除分配的实例 )

    关于解除程序占用的问题,在voiceover 解除中经常遇到,在启用 VoiceOver 的情况下运行我的应用程序时,我遇到了一个奇怪的崩溃。该应用程序有一个侧边栏界面(如 Facebook)。当点击侧边栏UITableView中的UITableViewCell之一时,我换掉了视图控制器(根据点击的单元格创建一个新的,并释放旧的)。…

    2022-12-26 13:37:57
    0 33 27
  • E pac:Fretecorreioserronopacenosedex

    关于E pac的问题,在calcular frete correios中经常遇到,Gostaria da ajuda de vocus nos seguintes erros,o primeiro é no pac,ele retornar o valor,at é ai tudo certo,por é mele tamb é mtraz:…

    2022-12-14 07:06:30
    0 34 83

发表评论

登录 后才能评论

评论列表(51条)