前言:
前天學(xué)了IOS的NSOperation基本使用,我們得知NSOperation也是基于IOS GCD(Grand Central Dispatch)實(shí)現(xiàn),其實(shí)在做IOS開發(fā)中GCD已經(jīng)基本上能夠滿足大部分需求。作為IOS開發(fā)工程師很有必要對GCD做個全面了解,今天一邊寫demo一邊對比總結(jié)一下GCD使用。
了解GCD
GCD是Grand Central Dispatch的簡稱,它是基于C語言的。如果使用GCD,完全由系統(tǒng)管理線程,我們不需要編寫線程代碼。只需定義想要執(zhí)行的任務(wù),然后添加到適當(dāng)?shù)恼{(diào)度隊列(dispatch queue)。GCD會負(fù)責(zé)創(chuàng)建線程和調(diào)度你的任務(wù),系統(tǒng)直接提供線程管理。
執(zhí)行方式
使用線程就離不開線程隊列的執(zhí)行方式和任務(wù)的執(zhí)行方式,大致分以下幾個:
串行(Serial):讓任務(wù)一個接著一個地執(zhí)行(一個任務(wù)執(zhí)行完畢后,再執(zhí)行下一個任務(wù))
并行(Concurrent):可以讓多個任務(wù)并發(fā)(同時)執(zhí)行(自動開啟多個線程同時執(zhí)行任務(wù))并發(fā)功能只有在異步(dispatch_async)函數(shù)下才有效。
同步(Synchronous):在當(dāng)前線程中執(zhí)行任務(wù),不具備開啟新線程的能力
異步(Asynchronous):在新的線程中執(zhí)行任務(wù),具備開啟新線程的能力
調(diào)度隊列
上面了解到Dispatch 通過分發(fā)開發(fā)者提供的不同queue來調(diào)度任務(wù),我們來看下GCD有哪些隊列。
隊列類型 | 創(chuàng)建方式 |
主線程串行隊列(mian) | dispatch_get_main_queue(); |
延伸閱讀
我想了解如何學(xué)習(xí) |