【讀書筆記】iOS-“一心多用”利用多線程提升效能,ios-一心多用
iPhone將具有支援不同類型多線程API的能力,這些API包括:POSIX線程,NSObject,NSThread和NSOperation.
iPhone作業系統是一個真正的搶佔式,多任務作業系統,允許開發人員建立多線程應用。
拿著一個iPhone時,我手中實際是 一個配備Unix作業系統的搶佔式,多任務電腦,它有一個圖形介面,並提供GPS功以,Wi-Fi以及大量內建的函數庫,另外這也是一個手機 ,這實在令人驚歎,真是了不起!
線程或執行線程是電腦程式中一個分支,會引發兩個或多個並發啟動並執行任務。線程包含在電腦程式中
基本來說,如果應用在完成一個或多個任務的同時還需要保證對使用者的響應性,就應當對應用使用多線程。
多線程是指,作業系統控制多個進程共用CPU時間並等待它們的時間片到來,以達成多個任務同時啟動並執行效果。作業系統會讓CPU為一個進程服務幾毫秒,然後要求這個進程進入休眠狀態,而讓CPU為其他進程提供服務。
進程就是正在啟動並執行應用
如果多個線程試圖訪問資源並同時完成讀和寫操作,資源的值可能不正確,而且很可能被破壞。例如,假設兩個線程分別表示一個遊戲應用中的兩個角色,且這兩個線程同時運行。同步是指保持資料一致或者維護線程之間資料的完整性。如果一個線程試圖讀取gameScroe變數,而另一個線程試圖更新gameScore變數,gameScore變數就可能不正確。
臨界區是一段代碼,可以保護共用資源,防止多個線程同時訪問這段代碼而破壞共用資源。
存在某些條件時,線程訪問資源的時間順序可能導致出乎意料的結果。這種情況通常稱為一種競態條件。
在多線程中互斥鎖用來避免同時使用一個公用資源。很多著名的競態條件例子就曾導致災難性的後果。
兩個或多個線程永遠阻塞,互相等待對方釋放各自獨特持有的資源時,則會出現線程應用中另一個常見的陷阱。這稱為一個死結條件。
啟動一個線程時,實際上會脫離Cocoa架構。此時,要由我們來負責清理記憶體池。如果沒有這樣做,就會出現記憶體流失。
運行迴圈,會處理你用來調度工作的事件差協調到來事件的接收,其作用是在有工作時保持線程的繁忙狀態,而在沒有任何工作時置線程為睡眠模式。要瞭解有關運行迴圈的更多資訊。
參考資料:《精彩iPhone炫酷開發-七位一線高手的編程和設計範例》