我的应用程序使用NSOperationQueue
在后台线程中缓存缩略图。在iPad2上,我可以将并发任务数限制提高到5或6,但是在像iPad 1这样的单核设备上,这会使UI陷入停滞。
因此,我想检测一个双核设备(目前只有iPad 2)并适当调整并发限制。我知道我不应该检查型号,而要检查设备功能。那么,我应该寻找什么设备功能来告诉我CPU是否为双核?
最佳答案
方法1
[[NSProcessInfo processInfo] activeProcessorCount];
NSProcessInfo
也具有processorCount
属性。了解差异here。方法2
#include <mach/mach_host.h>
unsigned int countCores()
{
host_basic_info_data_t hostInfo;
mach_msg_type_number_t infoCount;
infoCount = HOST_BASIC_INFO_COUNT;
host_info( mach_host_self(), HOST_BASIC_INFO, (host_info_t)&hostInfo, &infoCount ) ;
return (unsigned int)(hostInfo.max_cpus);
}
方法3
#include <sys/sysctl.h>
unsigned int countCores()
{
size_t len;
unsigned int ncpu;
len = sizeof(ncpu);
sysctlbyname ("hw.ncpu",&ncpu,&len,NULL,0);
return ncpu;
}