歡迎加入QQ討論群258996829
麥子學(xué)院 頭像
蘋果6袋
6
麥子學(xué)院

幾種iOS多線程的對(duì)比分析

發(fā)布時(shí)間:2016-06-18 22:32  回復(fù):0  查看:3493   最后回復(fù):2016-06-18 22:32  
一周六早上,小明處于安全考慮,去銀行服務(wù)廳申請(qǐng)多一張銀行卡作為手機(jī)消費(fèi)指定數(shù)額不多的專用卡。到了銀行,看到大廳坐滿了人,唱K的唱K,念經(jīng)的念經(jīng),嘔奶的嘔奶,彼起此伏,聲聲入耳,直趕清華大學(xué)演奏團(tuán)演奏的《小蘋果》,呀~!其實(shí)真實(shí)的情況是:每個(gè)人都做著椅子上低下頭盯著各自的手機(jī),小明也不例外,找了個(gè)角落,瀏覽起3016年的新聞。半個(gè)小時(shí)過(guò)去了,40分鐘過(guò)去了,一個(gè)小時(shí)過(guò)去!小明等怒了,大喊“嘿嘿嘿,開(kāi)多一條線程不可以嗎?。?!”
“什么是 ios多線程 ???”
幾種iOS多線程的對(duì)比分析
一.基本概念
計(jì)算機(jī)操作系統(tǒng)都有的基本概念,以下概念簡(jiǎn)單方式來(lái)描述。 
1.進(jìn)程: 一個(gè)具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合的一次運(yùn)行活動(dòng)??梢岳斫獬梢粋€(gè)運(yùn)行中的應(yīng)用程序。
2.線程: 程序執(zhí)行流的最小單元,線程是進(jìn)程中的一個(gè)實(shí)體。 
3.同步: 只能在當(dāng)前線程按先后順序依次執(zhí)行,不開(kāi)啟新線程。
4.異步: 可以在當(dāng)前線程開(kāi)啟多個(gè)新線程執(zhí)行,可不按順序執(zhí)行。
5.隊(duì)列: 裝載線程任務(wù)的隊(duì)形結(jié)構(gòu)。 
6.并發(fā): 線程執(zhí)行可以同時(shí)一起進(jìn)行執(zhí)行。
7.串行: 線程執(zhí)行只能依次逐一先后有序的執(zhí)行。 
注意: 
?一個(gè)進(jìn)程可有多個(gè)線程。 
?一個(gè)進(jìn)程可有多個(gè)隊(duì)列。 
?隊(duì)列可分并發(fā)隊(duì)列和串行隊(duì)列。 
二.iOS多線程對(duì)比
1. NSThread
每個(gè)NSThread對(duì)象對(duì)應(yīng)一個(gè)線程,真正最原始的線程。
1)優(yōu)點(diǎn):NSThread 輕量級(jí)最低,相對(duì)簡(jiǎn)單。
2)缺點(diǎn):手動(dòng)管理所有的線程活動(dòng),如生命周期、線程同步、睡眠等。
2. NSOperation
自帶線程管理的抽象類。
1)優(yōu)點(diǎn):自帶線程周期管理,操作上可更注重自己邏輯。
2)缺點(diǎn):面向?qū)ο蟮某橄箢?,只能?shí)現(xiàn)它或者使用它定義好的兩個(gè)子類:NSInvocationOperation 和 NSBlockOperation。
3. GCD
Grand Central Dispatch (GCD)是Apple開(kāi)發(fā)的一個(gè)多核編程的解決方法。
1)優(yōu)點(diǎn):最高效,避開(kāi)并發(fā)陷阱。
2)缺點(diǎn):基于C實(shí)現(xiàn)。
4. 選擇小結(jié)
1)簡(jiǎn)單而安全的選擇NSOperation實(shí)現(xiàn)多線程即可。
2)處理大量并發(fā)數(shù)據(jù),又追求性能效率的選擇GCD。
3)NSThread本人選擇基本上是在做些小測(cè)試上使用,當(dāng)然也可以基于此造個(gè)輪子。
三.場(chǎng)景選擇
1.圖片異步加載。這種常見(jiàn)的場(chǎng)景是最常見(jiàn)也是必不可少的。異步加載圖片有分成兩種來(lái)說(shuō)明一下。
第一種,在UI主線程開(kāi)啟新線程按順序加載圖片,加載完成刷新UI。
第二種,依然是在主線程開(kāi)啟新線程,順序不定地加載圖片,加載完成個(gè)字刷新UI。 
2.創(chuàng)作工具上的異步。 這個(gè)跟上邊任務(wù)調(diào)度道理差不多,只是為了豐富描述,有助于“舉一反三”效果。如下描述的是app創(chuàng)作小說(shuō)。
場(chǎng)景一,app本地創(chuàng)作10個(gè)章節(jié)內(nèi)容未成同步服務(wù)器,接著同時(shí)發(fā)表這10個(gè)章節(jié)將產(chǎn)生的一系列動(dòng)作,其中上傳內(nèi)容,獲取分配章節(jié)Id,如果后臺(tái)沒(méi)有做處理最好方式做異步按順序執(zhí)行。
場(chǎng)景二,app本地創(chuàng)作列表中有3本小說(shuō)要發(fā)表,如果同時(shí)發(fā)表創(chuàng)作列表中的3本小說(shuō),自然考慮并行隊(duì)列執(zhí)行發(fā)表。

原文鏈接:minggo
您還未登錄,請(qǐng)先登錄

熱門帖子

最新帖子

?