欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

iOS如何高效的使用多線程-創(chuàng)新互聯(lián)

一、多線程簡(jiǎn)述

成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)新城,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18980820575

線程是程序執(zhí)行流的最小單元,一個(gè)線程包括:獨(dú)有ID,程序計(jì)數(shù)器 (Program Counter),寄存器集合,堆棧。同一進(jìn)程可以有多個(gè)線程,它們共享進(jìn)程的全局變量和堆數(shù)據(jù)。

這里的 PC (Program Counter) 指向的是當(dāng)前的指令地址,通過(guò) PC 的更新來(lái)運(yùn)行我們的程序,一個(gè)線程同一時(shí)刻只能執(zhí)行一條指令。當(dāng)然我們知道線程和進(jìn)程都是虛擬的概念,實(shí)際上 PC 是 CPU 核心中的寄存器,它是實(shí)際存在的,所以也可以說(shuō)一個(gè) CPU 核心同一時(shí)刻只能執(zhí)行一個(gè)線程。

不管是多處理器設(shè)備還是多核設(shè)備,開(kāi)發(fā)者往往只需要關(guān)心 CPU 的核心數(shù)量,而不需關(guān)心它們的物理構(gòu)成。CPU 核心數(shù)量是有限的,也就是說(shuō)一個(gè)設(shè)備并發(fā)執(zhí)行的線程數(shù)量是有限的,當(dāng)線程數(shù)量超過(guò) CPU 核心數(shù)量時(shí),一個(gè) CPU 核心往往就要處理多個(gè)線程,這個(gè)行為叫做線程調(diào)度。

線程調(diào)度簡(jiǎn)單來(lái)說(shuō)就是:一個(gè) CPU 核心輪流讓各個(gè)線程分別執(zhí)行一段時(shí)間。當(dāng)然這中間還包含著復(fù)雜的邏輯,后文再來(lái)分析。

二、多線程的優(yōu)化思路

在移動(dòng)端開(kāi)發(fā)中,因?yàn)橄到y(tǒng)的復(fù)雜性,開(kāi)發(fā)者往往不能期望所有線程都能真正的并發(fā)執(zhí)行,而且開(kāi)發(fā)者也不清楚 XNU 何時(shí)切換內(nèi)核態(tài)線程、何時(shí)進(jìn)行線程調(diào)度,所以開(kāi)發(fā)者要經(jīng)??紤]到線程調(diào)度的情況。

1、減少線程切換

當(dāng)線程數(shù)量超過(guò) CPU 核心數(shù)量,CPU 核心通過(guò)線程調(diào)度切換用戶態(tài)線程,意味著有上下文的轉(zhuǎn)換(寄存器數(shù)據(jù)、棧等),過(guò)多的上下文切換會(huì)帶來(lái)資源開(kāi)銷。雖然內(nèi)核態(tài)線程的切換理論上不會(huì)是性能負(fù)擔(dān),開(kāi)發(fā)中還是應(yīng)該盡量減少線程的切換。

2、線程優(yōu)先級(jí)權(quán)衡

通常來(lái)說(shuō),線程調(diào)度除了輪轉(zhuǎn)法以外,還有優(yōu)先級(jí)調(diào)度的方案,在線程調(diào)度時(shí),高優(yōu)先級(jí)的線程會(huì)更早的執(zhí)行。有兩個(gè)概念需要明確:

  • IO 密集型線程:頻繁等待的線程,等待的時(shí)候會(huì)讓出時(shí)間片。
  • CPU 密集型線程:很少等待的線程,意味著長(zhǎng)時(shí)間占用著 CPU。

特殊場(chǎng)景下,當(dāng)多個(gè) CPU 密集型線程霸占了所有 CPU 資源,而它們的優(yōu)先級(jí)都比較高,而此時(shí)優(yōu)先級(jí)較低的 IO 密集型線程將持續(xù)等待,產(chǎn)生線程餓死的現(xiàn)象。當(dāng)然,為了避免線程餓死,系統(tǒng)會(huì)逐步提高被“冷落”線程的優(yōu)先級(jí),IO 密集型線程通常情況下比 CPU 密集型線程更容易獲取到優(yōu)先級(jí)提升。

雖然系統(tǒng)會(huì)自動(dòng)做這些事情,但是這總歸會(huì)造成時(shí)間等待,可能會(huì)影響用戶體驗(yàn)。所以筆者認(rèn)為開(kāi)發(fā)者需要從兩個(gè)方面權(quán)衡優(yōu)先級(jí)問(wèn)題:

  • 讓 IO 密集型線程優(yōu)先級(jí)高于 CPU 密集型線程。
  • 讓緊急的任務(wù)擁有更高的優(yōu)先級(jí)。

比如一個(gè)場(chǎng)景:大量的圖片異步解壓的任務(wù),解壓的圖片不需要立即反饋給用戶,同時(shí)又有大量的異步查詢磁盤(pán)緩存的任務(wù),而查詢磁盤(pán)緩存任務(wù)完成過(guò)后需要反饋給用戶。

圖片解壓屬于 CPU 密集型線程,查詢磁盤(pán)緩存屬于 IO 密集型線程,而后者需要反饋給用戶更加緊急,所以應(yīng)該讓圖片解壓線程的優(yōu)先級(jí)低一點(diǎn),查詢磁盤(pán)緩存的線程優(yōu)先級(jí)高一點(diǎn)。

值得注意的是,這里是說(shuō)大量的異步任務(wù),意味著 CPU 很有可能滿負(fù)荷運(yùn)算,若 CPU 資源綽綽有余的情況下就沒(méi)那個(gè)必要去處理優(yōu)先級(jí)問(wèn)題。

3、主線程任務(wù)的優(yōu)化

有些業(yè)務(wù)只能寫(xiě)在主線程,比如 UI 類組件的初始化及其布局。其實(shí)這方面的優(yōu)化就比較多了,業(yè)界所說(shuō)的性能優(yōu)化大部分都是為了減輕主線程的壓力,似乎有些偏離了多線程優(yōu)化的范疇了,下面就基于主線程任務(wù)的管理大致羅列幾點(diǎn)吧:

  • 內(nèi)存復(fù)用

通過(guò)內(nèi)存復(fù)用來(lái)減少開(kāi)辟內(nèi)存的時(shí)間消耗,這在系統(tǒng) UI 類組件中應(yīng)用廣泛,比如 UITableViewCell 的復(fù)用。同時(shí),減少開(kāi)辟內(nèi)存意味著減少了內(nèi)存釋放,同樣能節(jié)約 CPU 資源。

  • 懶加載任務(wù)

既然 UI 組件必須在主線程初始化,那么就需要用時(shí)再初始化吧,swift 的寫(xiě)時(shí)復(fù)制也是類似的思路。

  • 任務(wù)拆分排隊(duì)執(zhí)行

通過(guò)監(jiān)聽(tīng) Runloop 即將結(jié)束等通知,將大量的任務(wù)拆分開(kāi)來(lái),在每次 Runloop 循環(huán)周期執(zhí)行少量任務(wù)。其實(shí)在實(shí)踐這種優(yōu)化思路之前,應(yīng)該想想能不能將任務(wù)放到異步線程,而不是用這種比較極端的優(yōu)化手段。

  • 主線程空閑時(shí)執(zhí)行任務(wù)
//這里是主線程上下文

`dispatch_async(dispatch_get_main_queue(), ^{

//等到主線程空閑執(zhí)行該任務(wù)

});

網(wǎng)頁(yè)名稱:iOS如何高效的使用多線程-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://aaarwkj.com/article24/codice.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、全網(wǎng)營(yíng)銷推廣、品牌網(wǎng)站建設(shè)、面包屑導(dǎo)航、用戶體驗(yàn)、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司
中文字幕日韩欧美一区二区| 亚洲午夜福利天堂社区| 哪里可以看黄色片日韩| 九色视频在线观看91| 麻豆专区一区二区三区| 激情自拍偷拍合集一部| 日本姜女黄视频免费看| 亚洲中文字幕乱码第一页| 国产精品一级片一区二区| 日本成熟亚洲中文字幕的| 亚洲蜜桃精品一区二区三区| 日本少妇熟女一区二区| 亚洲午夜经典一区二区日韩| 韩国三级福利在线观看| 午夜宅男在线视频观看| 麻豆国产传媒片在线观看| 一区二区少妇黄色三区| 欧美精品国产精品久久| av全欧国男人在线天堂| 中文字幕日韩有码在线| 欧美精品一区二区三区黄片| 国产a情人一区二区国产| 亚洲av成人精品日韩一区麻豆| 亚洲熟妇人妻一区二区三区| 天天干天天干夜夜操| 亚洲一二三区精品与老人| 日木av中文字幕女女同性| 一本综合九九国产二区| 偷拍丝袜美腿在线观看| 亚洲av网站女性向在线观看| 精品久久久噜噜噜久久| 亚洲熟女熟妇另类中文| 国产综合一区在线观看97| 国产黄片一区二区在线| 久久久精品人妻免费网站| 国产精品极品网站91青青| 亚洲精品香蕉久久情趣| 国产久精品热看久品热久热| 日韩网激情视频在线观看| 蜜臀午夜精品视频在线观看 | 国产91高清免费视频|