您好,登錄后才能下訂單哦!
在本章,你會學到:
線程和多線程技術
在iPhone應用中,如何使用鎖來編寫和管理線程
和多線程環境相關的概念
1)安全性:程序應該產生我們預期的結果
2)活躍性:預期的結果必須最終在某個時間點上產生
3)性能:預期的結果必須較快的產生
知道什么時候使用線程
了解線程和蘋果內置的其他解決方案的不同
如今的計算設備已經有越來越多的處理器。iPhone也不例外;在不久的將來,iPhone將會有許多處理器;事實上,Android有些設備已經擁有雙核處理器。因此,我們需要知道如何在多處理器上開發程序。這僅僅是我們學習多線程的一個原因。線程這種渠道能夠幫助你解決一些其他問題,比如異步代碼,文件和網絡IO,或者減緩計算過程。
線程和多線程編程
簡單來說,線程是操作系統運行的一序列命令。不同的線程能夠運行在相同的處理器或不同的處理器上,這取決于操作系統,如圖6-1。
正常情況下,操作系統打開一個新的應用程序時,只有一個線程 -- 換句話說,從頭到尾只有一個命令集。多線程是指,系統有多于一個的命令集在并發情況下運行。在一個多處理器系統中,每一個線程可以在每一個處理器上同時執行,如圖6-1 。
但是,在單個處理器系統中,CPU在切到其他線程之前,會在一個線程中處理某些命令。在圖6-2中,在進入線程2之前,CPU在線程1中執行一些命令。然后在進入線程3之前,CPU在線程2中執行命令。
沿著處理的路徑,不同的線程可以從不同的對象中調用不同的方法,如圖6-3。線程1和線程2可以同時使用相同的對象調用相同的方法,線程1和線程2也可以調用Object 1的 Method 1和Object 3的Method 3。但是,當線程1調用Object 2的Method 2,線程2調用Object 4的Method 4的時候,線程1和線程2可以調用不同的對象和方法。
在同一個應用中使用多線程,有優點也有缺點。下面這個部分將會討論他們。多線程最大的好處是可以將其他任務從main UI中解耦出來,這樣UI就不會阻塞或凍結。
線程術語
下面是一些重要的線程術語:
線程這個術語是用來表示代碼中一個獨立的命令/可執行序列。
線程這個術語是用來表示多線程中的一個正在運行的可執行程序。
線程這個術語是用來表示需要執行的一個抽象的工作。
線程和進程有什么不同,當他們都用來執行并發邏輯?進程在下面這些方面和線程不同:
進程是一個分配單元;它有自己的資源,堆內存和優先級。線程只是一個擁有它自己的棧和程序計算的可執行單元。
一個進程可以包含很多線程,一個線程只能屬于一個進程。
一個線程可以和屬于同一個進程的其他線程共享數據。兩個進程之間不能共享數據;他們通常使用進程間通信來轉移數據。(進程間通信已經超出本章的范圍)
系統必須分配一個特定的資源,進程不能共享這些資源,所以進程被認為是重量級的。然而,線程可以共享資源,所有系統能夠在同一個進程內部創建很多線程。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。