iOS多線程

最近開始學(xué)習(xí)多線程相關(guān)的知識爆哑,所以寫篇文章記載下,會因不斷的學(xué)習(xí)而做出持續(xù)的更新和糾正舆吮。
參考資料:NSThread揭朝、NSOperationNSOperationQueue色冀、iOS多線程GCD

iOS里用到的多線程的方案主要需要了解的有GCD和NSOperation & NSOperationQueue潭袱,掌握這倆就夠了。

GCD

GCD中有兩個非常重要的概念:任務(wù) 和 隊列锋恬。

任務(wù)就是block中的一個個代碼塊屯换。有兩種,同步和異步,主要區(qū)別是

同步任務(wù):完成需要做的任務(wù)后才會返回彤悔,進行下一任務(wù)

異步任務(wù):無需完成任務(wù)即可立即返回嘉抓。

隊列就是用來存放任務(wù)的,分為串行和并行晕窑。

串行隊列:任務(wù)依據(jù)FIFO一個一個的按順序執(zhí)行抑片。

并行隊列:任務(wù)也依據(jù)FIFO來取出孩等,但是由于取出的速度很快颜懊,可以看作是同時執(zhí)行多個任務(wù)。

同步任務(wù)對應(yīng)的方法是:dispatch_sync

異步任務(wù)對應(yīng)的是:dispatch_async

串行隊列:DISPATCH_QUEUE_SERIAL;

并行隊列:DISPATCH_QUEUE_CONCURRENT;

這里給出一個案例:

dispatch_queue_t queue = dispatch_queue_create("myQueue", DISPATCH_QUEUE_SERIAL);// 串行隊列

 NSLog(@"之前-%@",[NSThread currentThread]);===================0  

 dispatch_async(queue, ^{

 NSLog(@"sync之前-%@",[NSThread   currentThread]);================1

dispatch_sync(queue, ^{

NSLog(@"sync-%@",[NSThread
currentThread]);===================2

});

NSLog(@"sync之后-%@",[NSThread currentThread]);=================3

});

NSLog(@"之后-%@",[NSThread currentThread]);===================4
最終打印的結(jié)果是:0恼除、4疾牲、1

dispatch_queue_t queue = dispatch_queue_create("myQueue", DISPATCH_QUEUE_CONCURRENT);// 并行隊列

NSLog(@"之前-%@",[NSThread currentThread]);===================0

dispatch_async(queue, ^{

NSLog(@"sync之前-%@",[NSThread currentThread]);================1

dispatch_sync(queue, ^{

NSLog(@"sync-%@",[NSThread currentThread]);===================2

});

NSLog(@"sync之后-%@",[NSThread currentThread]);=================3

});

NSLog(@"之后-%@",[NSThread currentThread]);===================4 

輸出結(jié)果是0植捎、4、1阳柔、2鸥跟、3

這是因為:首先這是一個異步的,所以不會影響盔沫,先執(zhí)行0医咨、4,而內(nèi)部1架诞、3是父任務(wù)拟淮,2是子任務(wù),當(dāng)是串行隊列的時候谴忧,要等父任務(wù)執(zhí)行完才能執(zhí)行子任務(wù)很泊,所以2要等1、3執(zhí)行完才能執(zhí)行沾谓,而又由于2是在同步線程里的委造,所以又要求按照1、2均驶、3的順序昏兆,這樣就導(dǎo)致2、3在互相等妇穴,所以會產(chǎn)生阻塞爬虱。而在并行隊列中,子任務(wù)不需要等父任務(wù)執(zhí)行完就可以執(zhí)行腾它,但是子任務(wù)必須自己執(zhí)行完才能執(zhí)行下一步跑筝,所以順序是1、2瞒滴、3曲梗,不會產(chǎn)生阻塞。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市虏两,隨后出現(xiàn)的幾起案子愧旦,更是在濱河造成了極大的恐慌,老刑警劉巖碘举,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異搁廓,居然都是意外死亡引颈,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門境蜕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蝙场,“玉大人,你說我怎么就攤上這事粱年∈勐耍” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵台诗,是天一觀的道長完箩。 經(jīng)常有香客問我,道長拉队,這世上最難降的妖魔是什么弊知? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮粱快,結(jié)果婚禮上秩彤,老公的妹妹穿的比我還像新娘。我一直安慰自己事哭,他們只是感情好漫雷,可當(dāng)我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鳍咱,像睡著了一般降盹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谤辜,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天澎现,我揣著相機與錄音,去河邊找鬼每辟。 笑死剑辫,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的渠欺。 我是一名探鬼主播妹蔽,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了胳岂?” 一聲冷哼從身側(cè)響起编整,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎乳丰,沒想到半個月后掌测,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡产园,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年汞斧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片什燕。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡粘勒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出屎即,到底是詐尸還是另有隱情庙睡,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布技俐,位于F島的核電站乘陪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏雕擂。R本人自食惡果不足惜暂刘,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捂刺。 院中可真熱鬧谣拣,春花似錦、人聲如沸族展。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仪缸。三九已至贵涵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間恰画,已是汗流浹背宾茂。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拴还,地道東北人跨晴。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像片林,于是被迫代替她去往敵國和親端盆。 傳聞我的和親對象是個殘疾皇子怀骤,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容