前言:

     前天學(xué)了IOS的NSOperation基本使用,我們得知NSOperation也是基于IOS GCD(Grand Central Dispatch)實(shí)現(xiàn),其實(shí)在做IOS開(kāi)發(fā)中GCD已經(jīng)基本上能夠滿足大部分需求。作為IOS開(kāi)發(fā)工程師很有必要對(duì)GCD做個(gè)全面了解,今天一邊寫(xiě)demo一邊對(duì)比總結(jié)一下GCD使用。

了解GCD

    GCD是Grand Central Dispatch的簡(jiǎn)稱,它是基于C語(yǔ)言的。如果使用GCD,完全由系統(tǒng)管理線程,我們不需要編寫(xiě)線程代碼。只需定義想要執(zhí)行的任務(wù),然后添加到適當(dāng)?shù)恼{(diào)度隊(duì)列(dispatch queue)。GCD會(huì)負(fù)責(zé)創(chuàng)建線程和調(diào)度你的任務(wù),系統(tǒng)直接提供線程管理。

執(zhí)行方式

    使用線程就離不開(kāi)線程隊(duì)列的執(zhí)行方式和任務(wù)的執(zhí)行方式,大致分以下幾個(gè):

  • 串行(Serial):讓任務(wù)一個(gè)接著一個(gè)地執(zhí)行(一個(gè)任務(wù)執(zhí)行完畢后,再執(zhí)行下一個(gè)任務(wù))

  • 并行(Concurrent):可以讓多個(gè)任務(wù)并發(fā)(同時(shí))執(zhí)行(自動(dòng)開(kāi)啟多個(gè)線程同時(shí)執(zhí)行任務(wù))并發(fā)功能只有在異步(dispatch_async)函數(shù)下才有效。

  • 同步(Synchronous):在當(dāng)前線程中執(zhí)行任務(wù),不具備開(kāi)啟新線程的能力

  • 異步(Asynchronous):在新的線程中執(zhí)行任務(wù),具備開(kāi)啟新線程的能力

調(diào)度隊(duì)列

    上面了解到Dispatch 通過(guò)分發(fā)開(kāi)發(fā)者提供的不同queue來(lái)調(diào)度任務(wù),我們來(lái)看下GCD有哪些隊(duì)列。

      隊(duì)列類型創(chuàng)建方式

      主線程串行隊(duì)列(mian)

      dispatch_get_main_queue();

      網(wǎng)友評(píng)論