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