3

コードが10.4にさかのぼるフラクタルレンダリングアプリに取り組んでいます。NSThreadsを使用してレンダリングスレッドを管理し、フラクタルを計算します。

最近まで、10.4までのOSをサポートしていたため、NSOperationQueuesを使用するようにアップグレードすることもできませんでした。

アプリFractalWorksは、MacAppStoreで入手できるようになりました。OSの最小要件は10.6.6です。したがって、古いOSのサポートを中止し、NSOperationQueuesまたはGCDを使用するようにレンダリングをやり直します。

それまでの間、新しくリリースされたライオンでそれをきれいに稼働させたいと思います。具体的には、10.7で新たに非推奨になったロングリスト呼び出しを削除したいと思います。この最初のパスは、必要最低限​​のアップグレードになります。

アプリは現在、MPProcessorsメソッドを使用してシステム上のコアの数を決定しているため、コアごとにレンダリングスレッドを作成できます。それは正常に動作し、MPProcessorsはi5 / i7でのハイパースレッディングも可能にし、プログラムがコアの2倍の数のレンダリングスレッドを作成できるようにします。

MPProcessorsが現在行っているのとまったく同じように、論理コアの数をシステムに照会できる最新の呼び出しが必要です。ドキュメントには、代替手段を提供せずに、このメソッドは非推奨であると単純に記載されています。代替手段は何ですか?(そして、GCD / NSOperationQueuesを教えてはいけません。それが進むべき道であることは知っていますが、それは私が今引き受ける準備ができているよりも大きな仕事です。)

前もって感謝します、

ダンカンチャンプニーウェアト

4

1 に答える 1

5

ココアでは:[NSProcessInfo processInfo].processorCount

BSD の場合:sysctlbyname("hw.ncpu", ...)

ゲシュタルトで:Gestalt(gestaltCountOfCPUs, &count);

于 2011-07-22T15:05:35.553 に答える