iOS線程鎖的研究

iOS線程鎖的研究

在開始說線程鎖之前,我們需要了解線程的概念。

什么是線程

線程,有時被稱為輕量級進程(LWP),是程序執(zhí)行流的最小單元。一個標準的線程由線程ID,當前指令指針,寄存器集合和堆棧組成。

大多數(shù)的軟件應(yīng)用中,線程的數(shù)量都不止一個。多個線程可以互不干擾地并發(fā)執(zhí)行,并共享的全局變量和堆的數(shù)據(jù)。

那什么情況下,我們會用多線程:


1.某個操作可能會陷入長時間等待,等待的線程會進入睡眠狀態(tài),無法繼續(xù)執(zhí)行,多線程執(zhí)行可以有效利用等待的時間。典型的例子是等待網(wǎng)絡(luò)響應(yīng)。

2.某個操作(類似有算法的方法)會消耗大量的時間,如果只有一個線程,程序和用戶之間的交互會中斷,多線程可以讓主線程負責交互,另一個線程負責計算。

3.程序本身邏輯就要并發(fā),例如下載程序

4.多核計算機,本身具有同時具有多個線程的能力(充分利用硬件優(yōu)勢)

5.多線程主數(shù)據(jù)共享方面效率要高很多

線程調(diào)度與優(yōu)先級

線程調(diào)度

在多道程序系統(tǒng)中,進程的數(shù)量往往多于處理器的個數(shù),進程爭用處理器的情況在所難免。處理器調(diào)度是對處理器進行分配,就是從就緒隊列中,按照一定的算法,選擇一個進程并將處理器分配給他運行,以實現(xiàn)進程的并發(fā)執(zhí)行。

線程的調(diào)度準則主要如下:

  • CPU利用率

  • 系統(tǒng)吞吐量

  • 周轉(zhuǎn)時間

  • 等待時間

  • 響應(yīng)時間

線程正常的調(diào)度過程,詳情如下:

線程調(diào)度

線程通常的三種狀態(tài):

  • 運行:此線程正在執(zhí)行

  • 就緒:此線程可以立刻運行,但CPU已經(jīng)被占用

  • 等待:此線程正在等待某一事件

除了正常的線程調(diào)度之外,現(xiàn)在普遍的操作系統(tǒng)還帶有優(yōu)先級調(diào)度,即優(yōu)先級高的限制性,具體的內(nèi)部實現(xiàn)詳見線程的調(diào)度,這里需要說明一下,線程優(yōu)先級的改變主要有三種方式:

1.用戶制定優(yōu)先級

2.根據(jù)進入優(yōu)先級的頻繁程度提升或降低優(yōu)先級

3.長時間得不到調(diào)用而被提升優(yōu)先級

伴隨多線程的出現(xiàn),不同的線程訪問同一資源,在保證資源的正確性的前提下,線程鎖的概念就運應(yīng)而生。

線程的同步的實現(xiàn)原理本質(zhì)即為鎖的現(xiàn)實,在介紹iOS中的同步鎖之前,我們首先需要介紹鎖的類型。

鎖的類型

二元信號量(Binary Semaphore)

二元信號量是最簡單的一種鎖,它只有兩種狀態(tài):占用與非占用。它適合只能被唯一一個線程獨占訪問的資源。當二元信號量處于非占用狀態(tài)時,第一個試圖獲取該二元信號量的線程會獲得該鎖,并將二元信號量置為占用狀態(tài)。第二個試圖獲取該二元信號量的線程將會等待,直到該鎖的釋放。

互斥量(Mutex)

互斥量與信號量非常類似,區(qū)別就在于信號量可以被任意的線程獲取并釋放,互斥量則要求哪個線程獲取了互斥量,哪個線程就要負責釋放。

臨界區(qū)(Critical Section)

與互斥鎖類似,但比互斥鎖更為嚴格,臨界區(qū)的作用范圍僅限于本進程,其余線程不可獲取該鎖。

讀寫鎖(Read-Write Lock)

這里不詳細介紹,讀寫鎖三種狀態(tài):自由/共享/獨占有兩種獲取方式:共享和獨占

當以共享方式去獲取鎖時,除了獨占狀態(tài)需等待,其余狀態(tài)均可獲??;

當以獨占方式去獲取鎖時,線程必須等待鎖被所有資源釋放后,才可以獲?。?/p>

條件變量(Condition Variable)

該鎖類似一個塞子,不同的線程均可以等待相同的條件,但只有滿足條件的線程才會被喚醒。

iOS中存在的同步鎖

(未完待續(xù))

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容