2011-07-22 50 views
3

我正在研究一個代碼可以追溯到10.4的分形渲染應用程序。它使用NSThreads來管理渲染線程來計算分形。MPProcessors在Mac OS 10.7中已棄用。有什麼選擇?

直到最近,它支持的操作系統回到10.4,所以我甚至不能升級使用NSOperationQueues。

的應用程序,FractalWorks,現已在Mac App Store中,誰的最低OS要求是10.6.6。因此,我們放棄了對較老的操作系統的支持,並且將返回並重新使用NSOperationQueues或GCD進行渲染。

在此期間,我要得到它,並在新發布的獅子乾淨運行。具體而言,我想擺脫10.7中新近棄用的長列表調用。這第一遍將是一個簡單的升級。

該應用當前使用MPProcessors方法來確定系統上的核心數,所以它可以爲每個核的渲染線程。它工作正常,並且MPProcessors甚至允許在i5/i7上進行超線程,並允許程序創建與內核一樣多的渲染線程。

我需要一個現代呼叫,讓我查詢系統邏輯內核的數量,正是因爲MPProcessors現在。文檔只是說,該方法已被棄用,沒有提供替代方案。什麼是替代方案? (別告訴我GCD/NSOperationQueues。我知道這是要走的路,但是這是一個更大的工作比我準備馬上採取。)提前

感謝,

鄧肯Champney WareTo

+0

所以你知道答案是什麼,但你不喜歡它,所以你希望得到一個不同的答案? – Caleb

+0

我知道你不想碰GCD或類似OpenCL的一種技術,它也可能是巨大的,但我想你會發現,你可以節省代碼量巨大,提高性能通過升級到這些技術。我強烈推薦你觀看Drew McCormack的[雪豹並行編程](http://ideveloper.tv/store/details?product_code=10001)視頻系列,他使用分形計算作爲這些技術的功能的一個例子。 –

+0

從長遠來看,Caleb/Brad絕對是真的,但是如果我已經有一個穩定的代碼庫,我也不願意把它扯掉。 –

回答

5

在可可:[NSProcessInfo processInfo].processorCount

在BSD-ESE:sysctlbyname("hw.ncpu", ...)

隨着完形:Gestalt(gestaltCountOfCPUs, &count);