我的应用程序使用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;
}

08-26 07:11