2011-07-22 6 views
3

私は10.4に戻るコードのフラクタルレンダリングアプリケーションに取り組んでいます。 NSThreadsを使用してレンダリングスレッドを管理してフラクタルを計算します。MPProcessorsはMac OS 10.7では非推奨です。代わりに何がありますか?

最近まで、これまでのOSは10.4に戻っていたので、NSOperationQueuesを使用するようにアップグレードすることさえできませんでした。

Mac App Storeで、フラクタルワークスのアプリが利用できるようになりました。最小要件は10.6.6です。したがって、古いOSのサポートを中止し、NSOperationQueuesまたはGCDを使用するようにレンダリングし直します。

その間に、私は新しくリリースされたライオンでそれを取得して正常に動作させたいと思います。具体的には、10.7で新しく廃止された長いリストコールを取り除きたい。この最初のパスはベアボーンのアップグレードになります。

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

私は現時点では、MPProcessorsと同じように、論理コアの数をシステムに問い合わせる必要があります。ドキュメントでは単に、そのメソッドが代わりのものを提供することなく非難されていると言います。代替手段は何ですか?事前に(そして、私はそれが進むべき道だけど、それは私が今取るために準備私より大きな仕事です。私にGCD/NSOperationQueuesを教えていない。)

おかげで、

ダンカンChampneyココアで WareTo

+0

あなたは答えが何であるかを知っていますが、あなたはそれが気に入らないので、別の答えを期待していますか? – Caleb

+0

GCDやOpenCLのような技術に触れたくないことは知っていますが、これは素晴らしいことかもしれませんが、膨大な量のコードを保存して、それらの技術にアップグレードしてパフォーマンスを向上させることができると思います。 Drew McCormackの[Concurrent Programming on Snow Leopard](http://ideveloper.tv/store/details?product_code=10001)ビデオシリーズでは、これらの技法の力の例としてフラクタル計算を使用することを強くお勧めします。 –

+0

長期的には本当に真実ですが、Caleb/Bradですが、安定したコードベースをすでに持っていれば、私はそれを捨てることを嫌うでしょう。 –

答えて

5

:BSD-ESEで[NSProcessInfo processInfo].processorCount

:ゲシュタルトでsysctlbyname("hw.ncpu", ...)

Gestalt(gestaltCountOfCPUs, &count);