在一台机器上确定可用的核心数?

4

我希望我的软件能够为每个核心创建一个线程,不同的Mac显然具有不同数量的核心。

有没有人知道如何(通过Cocoa编程)确定核心数量?


3
你可能想了解一下Grand Central Dispatch。它可以为你管理线程数量,并简化许多其他事情。 - Peter Hosey
相关:如何在iOS上检测双核CPU?(但这不是重复,我的错) - bobobobo
2个回答

26
[[NSProcessInfo processInfo] processorCount]

这是一个关于"Cocoa"的回答,但它只提供了逻辑核心数,而没有提供物理核心数。不清楚询问者实际想要哪一个。 - bhaller

2

请参见如何在iOS上检测双核CPU?它也适用于OS X。

unsigned int countCores()
{
    size_t len;
    unsigned int ncpu;
    len = sizeof(ncpu);
    sysctlbyname ("hw.ncpu",&ncpu,&len,NULL,0);
    return ncpu;
}

这个答案更加灵活,虽然不太“Cocoa”,因为sysctlbyname()可以提供物理核心数和逻辑核心数等信息(请参阅其手册)。 - bhaller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接