0

我使用以下代码来获取 cpu 频率。

-(int) returnCPUFreq
{
    size_t length;
    int mib[6];
    int result;

    mib[0] = CTL_HW;
    mib[1] = HW_CPU_FREQ;
    length = sizeof(result);

    sysctl(mib, 2, &result, &length, NULL, 0);

    return  result;
}

它给出了 6 位代码,并且每次运行应用程序时都会有所不同。即输出是第一次 644311 ,第二次 303921 .....

这段代码正确吗?每次运行应用程序时,值是否会有所不同?

4

1 回答 1

4

你的答案是正确的。您可以通过检查 sysctl(mib, 2, &result, &length, NULL, 0) < 0 来检查 sysctl 是否返回错误,但这不会改变频率变化的任何内容。这是因为 Apple 不允许读取其所有产品的频率。

当你需要它来确定你可以启用多少细节或类似的东西时,我会检查硬件模型并在我放置所有可用硬件模型的 nsdictionary 中查找 cpu 频率。

于 2012-12-27T09:31:31.630 回答