2012-07-28 54 views
2

我在編寫多核設備代碼時有些疑問。最初到iPhone 3GS iPhone有單核CPU。所以當我申請3GS時,如果我在多線程中編寫代碼,那麼如果我在iPhone 4或iPad 2(雙核)中運行應用程序,iOS是否將這些多線程分配給不同的內核?或者從開發人員那裏收集多核CPU特性的好處。這是iOS的責任分配不同的線程到不同的核心嗎?還假設有一個函數需要很長時間才能執行,並且我正在使用currrent線程調用此代碼(沒有創建多個線程),iOS是否將大任務分成兩個較小的任務並在不同的內核中執行?爲雙核iDevices編寫代碼

回答

6

如果使用線程原語編寫代碼,OS將自動處理核心管理。此外,如果您使用GCD,它會爲您優化核心和線程管理。底線,使用GCD(直接或通過像NSOperationQueue這樣的助手),並且系統將自動調整對系統CPU資源的訪問權限,不管您是在單個CPU還是多個CPU架構上。

+1

正是!或者使用NSOperations - GCD和NSOperationQueues都與內核密切合作來優化線程數量,重用線程等。 – 2012-07-28 15:21:22

+0

感謝您的回答。所以當我只是做[NSthread detachFromMainThread:];在多核設備上,iOS將在一個內核中運行主線程,而另一個內核中的新線程不是它? – rakeshNS 2012-07-28 15:22:59

+0

關於上述選項的美妙之處在於,您不必擔心線程,將它們分離等。只需初始化操作並由操作系統爲您處理線程即可。不過,請務必在mainThread上調用任何UI更新。 – runmad 2012-07-28 16:44:58