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 、2回目は 303921 .....

このコードは正しいですか? アプリを実行するたびに値は異なりますか?

4

1 に答える 1

4

あなたの答えは正しいです。sysctl(mib, 2, &result, &length, NULL, 0) < 0 を確認することで、sysctl がエラーを返さないかどうかを確認できますが、これはさまざまな頻度で何も変更しません。これは、Apple がすべての製品の周波数を読み取ることを許可していないためです。

有効にできる詳細の数などを判断する必要がある場合は、ハードウェア モデルを確認し、利用可能なすべてのハードウェア モデルを配置した nsdictionary で CPU 周波数を調べます。

于 2012-12-27T09:31:31.630 に答える