溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS使用多線程提高數(shù)據(jù)并發(fā)訪問 之一

發(fā)布時間:2020-06-11 22:03:53 來源:網(wǎng)絡 閱讀:2701 作者:iKingLai 欄目:移動開發(fā)

在本章,你會學到:

  • 線程和多線程技術

  • 在iPhone應用中,如何使用鎖來編寫和管理線程

  • 和多線程環(huán)境相關的概念

    1)安全性:程序應該產生我們預期的結果

    2)活躍性:預期的結果必須最終在某個時間點上產生

    3)性能:預期的結果必須較快的產生

  • 知道什么時候使用線程

  • 了解線程和蘋果內置的其他解決方案的不同


如今的計算設備已經有越來越多的處理器。iPhone也不例外;在不久的將來,iPhone將會有許多處理器;事實上,Android有些設備已經擁有雙核處理器。因此,我們需要知道如何在多處理器上開發(fā)程序。這僅僅是我們學習多線程的一個原因。線程這種渠道能夠幫助你解決一些其他問題,比如異步代碼,文件和網(wǎng)絡IO,或者減緩計算過程。


線程和多線程編程


簡單來說,線程是操作系統(tǒng)運行的一序列命令。不同的線程能夠運行在相同的處理器或不同的處理器上,這取決于操作系統(tǒng),如圖6-1。


正常情況下,操作系統(tǒng)打開一個新的應用程序時,只有一個線程 --  換句話說,從頭到尾只有一個命令集。多線程是指,系統(tǒng)有多于一個的命令集在并發(fā)情況下運行。在一個多處理器系統(tǒng)中,每一個線程可以在每一個處理器上同時執(zhí)行,如圖6-1 。


iOS使用多線程提高數(shù)據(jù)并發(fā)訪問 之一


但是,在單個處理器系統(tǒng)中,CPU在切到其他線程之前,會在一個線程中處理某些命令。在圖6-2中,在進入線程2之前,CPU在線程1中執(zhí)行一些命令。然后在進入線程3之前,CPU在線程2中執(zhí)行命令。


沿著處理的路徑,不同的線程可以從不同的對象中調用不同的方法,如圖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可以調用不同的對象和方法。


iOS使用多線程提高數(shù)據(jù)并發(fā)訪問 之一


在同一個應用中使用多線程,有優(yōu)點也有缺點。下面這個部分將會討論他們。多線程最大的好處是可以將其他任務從main UI中解耦出來,這樣UI就不會阻塞或凍結。


線程術語


下面是一些重要的線程術語:

  • 線程這個術語是用來表示代碼中一個獨立的命令/可執(zhí)行序列。

  • 線程這個術語是用來表示多線程中的一個正在運行的可執(zhí)行程序。

  • 線程這個術語是用來表示需要執(zhí)行的一個抽象的工作。


線程和進程有什么不同,當他們都用來執(zhí)行并發(fā)邏輯?進程在下面這些方面和線程不同:

  • 進程是一個分配單元;它有自己的資源,堆內存和優(yōu)先級。線程只是一個擁有它自己的棧和程序計算的可執(zhí)行單元。

  • 一個進程可以包含很多線程,一個線程只能屬于一個進程。

  • 一個線程可以和屬于同一個進程的其他線程共享數(shù)據(jù)。兩個進程之間不能共享數(shù)據(jù);他們通常使用進程間通信來轉移數(shù)據(jù)。(進程間通信已經超出本章的范圍)

  • 系統(tǒng)必須分配一個特定的資源,進程不能共享這些資源,所以進程被認為是重量級的。然而,線程可以共享資源,所有系統(tǒng)能夠在同一個進程內部創(chuàng)建很多線程。




向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI