2015-12-17 17:34:07 1702瀏覽
本文為大家介紹iOS操作系統(tǒng)多任務(wù)線程搶占的優(yōu)點,有意的掛起一個線程而調(diào)度另外的線程稱為搶占。采用搶占而不是直至運行完的調(diào)度策略稱為搶占調(diào)度。采用這種調(diào)度策略的操作系統(tǒng)稱為搶占式多任務(wù)操作系統(tǒng)。搶占主要是基于內(nèi)核通過一個上下文轉(zhuǎn)換(Context Switch)來周期性地改變現(xiàn)在運行的線程而實現(xiàn)的。上下文轉(zhuǎn)換的觸發(fā)可以是一個系統(tǒng)時鐘(每一個線程都分到一個時鐘長度),也可以是一個調(diào)用內(nèi)核本身的函數(shù)。當(dāng)一個上下文轉(zhuǎn)換被觸發(fā)時,內(nèi)核就選擇下一個線程訪問CPU,而被搶占的線程則被放于隊列尾,并根據(jù)調(diào)度策略等待下一次被調(diào)度的機會。
iOS操作系統(tǒng)多任務(wù)線程搶占有許多優(yōu)點,包括下面這些:
一、 它的可預(yù)測性
在有限的范圍內(nèi),一個線程可以知道它下次可能被調(diào)度的時問。例如:假設(shè)在內(nèi)核設(shè)置受限的情況下,一個線程可以設(shè)置為1秒鐘運行兩次,因此iOS開發(fā)編程者就能確定在哪個時間間隔里,該線程可能會被調(diào)度。
二、它的不易被打斷性
沿有任何單獨的線程能長時問占用CPU,一個陷入無限死循環(huán)的線程并不能阻止其他的線程被調(diào)度。當(dāng)然,搶占式多任務(wù)調(diào)度策略也有許多不足,比如:
1、 它比運行直至結(jié)束調(diào)度策略的效率低
總的來說,搶占式多任務(wù)調(diào)度系統(tǒng)總是傾向于經(jīng)常進行上下文轉(zhuǎn)換,這也意味著CPU將用更多的時間來進行線程調(diào)度和上下文轉(zhuǎn)換。
2、 它使應(yīng)用軟件變得更加復(fù)雜
一個運行于搶占式系統(tǒng)內(nèi)的線程可能隨時都會被中斷,在扣丁學(xué)堂iOS培訓(xùn)視頻中詳細介紹了編程者如何設(shè)計和編寫他的應(yīng)用程序來保護關(guān)鍵數(shù)據(jù)結(jié)構(gòu)使其不會因搶占而被其他的線程所篡改。
溫馨提示:當(dāng)操作系統(tǒng)內(nèi)核停止一個線程使用CPU,而調(diào)度另一個線程訪問CPU時,一個上下文轉(zhuǎn)換就發(fā)生了。換句話說,當(dāng)計算機改變它正執(zhí)行的任務(wù)時,就發(fā)生了上下文轉(zhuǎn)換。如果根據(jù)CPU占用時間來評價的話,上下文轉(zhuǎn)換是非常費時的,因為所有正在運行的線程所使用的寄存器都得被保存,然后再重新為新的線程使用。上下文是被搶先的線程得知它在哪里被停止的基礎(chǔ),也是即將運行的線程得知它上次運行到哪里的基礎(chǔ)。
查看更多關(guān)于“iOS資訊”的相關(guān)文章>>