iOS大中分術歌-神奇的多執行緒GCD技術
iOS大中分術歌
1. 歌曰:
非同步開發最頭疼
大中分術救碼農
碼塊分發歸佇列
佇列序列和並行
自家生成需釋放
何如系統本現成
主隊不似高低默
後臺佇列並行種
可以後設優先順序
或者晚發幾點鐘
多塊完事可用組
讀寫並串賴障屏
非同步之外有同步
你來決定停不停
多隊竟爭等訊號
分發一次單例成
偉大的分割線:
2. 解釋一下
非同步開發最頭疼
大中分術救碼農
碼塊分發歸佇列
佇列序列和並行
- 多執行緒非同步程式碼編寫最為複雜, 是眾多程式設計師頭疼的工作, 開發的複雜性, 是多執行緒非同步程式碼編寫的痛點. 蘋果創造性的發明了GDC技術, 用來支援多執行緒程式碼的編寫, 解決開發的複雜性這個痛點, 可謂中送炭, 拯救碼農於水火.
- GDC是Grand Central Dispatch的簡寫, 中文翻譯叫什麼都有, 我稱之為”大中分”技術.
- GCD的核心思想是利用block技術和佇列(queue)技術, 實現多執行緒. 將一個個程式碼塊, 塞到不同的佇列裡, 有序或者無需的執行.
- 佇列有兩種, 一種是序列佇列(
SERIAL
), 一種是並行佇列(CONCURRENT
). 序列佇列就像一縱隊往前走, 程式碼塊挨個執行, 前面的不動, 後面的不能動. 並行佇列就像一個橫排往前走, 誰也不會擋著誰.每個小箭頭代表一個block
序列佇列: →→→→→→→→→→
並行佇列: ↑↑↑↑↑↑↑↑↑↑
自家生成需釋放
何如系統本現成
主隊不似高低默
後臺佇列並行種
- 即使在使用了自動引用計數(ARC)的專案裡(目前大多數都預設使用ARC),對於使用者自己生成的佇列(呼叫
dispatch_queue_create
生成的佇列), 也需要進行手動的引用和釋放:dispatch_retain
,dispatch_release
- 系統已經準備好了一些佇列, 這些佇列不用手動管理引用計數. 包括:
dispatch_get_main_queue
獲得的主執行緒佇列,dispatch_get_global_queue
獲得的全域性佇列分為:高, 低, 預設優先順序的佇列以及後臺佇列. - 主執行緒佇列是序列的, 但是全域性佇列是並行的.
可以後設優先順序
或者晚發幾點鐘
多塊完事可用組
讀寫並串賴障屏
- GDC提供了一系列的方法, 可以設定佇列的優先順序等各種.
-
dispatch_after
可以用來設定多久之後將block塞進佇列. 類似於定時器. - 利用
dispatch_group_notify
等函式, 可以設定在一組block執行完成之後再執行某些block. - 分組:
[ →
→
→
→ ] →
- dispatch_barrier系列的函式, 可以用來幫助實現並行讀的同時序列寫. barrier是”屏障, 柵欄”等的意思.
- 屏障:
→ | →(屏障)| →
→ |什麼不是|
非同步之外有同步
你來決定停不停
多隊竟爭等訊號
分發一次單例成
- GDC也可以用來執行同步的操作
- 可以暫停或者繼續執行執行緒
- 也提供了傳統的訊號量機制讓非同步操作進行互斥操作
-
dispatch_once
函式是iOS裡實現單例模式(全域性物件)的不二法寶.
3. 魚與漁
這個什麼歌訣沒什麼重要的, 重要的是提煉知識點, 轉換為適合自己理解記憶的東西這件事. 將一些知識, 梳理總結, 編成歌訣, 寫成部落格, 畫成腦圖,這些方法都是漁, 至於總結出來的部落格, 歌訣, 腦圖, 通常都是魚.
另外, 所有GCD的函式, 都是dispatch_xxx, 所以只要有了Xcode這種能自動提示程式碼的ide, 只要知道GCD能幹什麼, 剩下的, 你懂的.
相關文章
- IOS 多執行緒技術iOS執行緒
- iOS開發之多執行緒技術(NSThread、OperationQueue、GCD)iOS執行緒threadGC
- iOS多執行緒GCD篇iOS執行緒GC
- IOS多執行緒之(GCD)iOS執行緒GC
- iOS 多執行緒之GCDiOS執行緒GC
- iOS 多執行緒的四種技術方案iOS執行緒
- iOS多執行緒程式設計技術之NSThread、Cocoa NSOperation、GCDiOS執行緒程式設計threadGC
- iOS多執行緒:GCD詳解iOS執行緒GC
- iOS多執行緒開發—GCD (一)iOS執行緒GC
- iOS多執行緒之GCD詳解iOS執行緒GC
- 多執行緒——GCD執行緒GC
- 多執行緒核心技術(1)-執行緒的基本方法執行緒
- iOS 多執行緒:『GCD』詳盡總結iOS執行緒GC
- iOS中多執行緒之GCD應用iOS執行緒GC
- iOS多執行緒:『GCD』詳盡總結iOS執行緒GC
- 多執行緒技術交流提綱執行緒
- C#多執行緒同步技術C#執行緒
- OC 多執行緒GCD執行緒GC
- iOS多執行緒(Pthread、NSThread、GCD、NSOperation)iOS執行緒threadGC
- 多執行緒與併發-----Lock鎖技術執行緒
- Java核心技術,讓計算機"一芯多用"的多執行緒技術Java計算機執行緒
- ios多執行緒程式設計(NSThread)(NSOperation )(GCD)iOS執行緒程式設計threadGC
- iOS GCD執行緒之間的通訊iOSGC執行緒
- iOS多執行緒全套:執行緒生命週期,多執行緒的四種解決方案,執行緒安全問題,GCD的使用,NSOperation的使用iOS執行緒GC
- Java 多執行緒乾貨系列—(一)Java 多執行緒基礎 | 掘金技術徵文Java執行緒
- GCD 多執行緒安全 單寫多讀GC執行緒
- 【併發技術01】傳統執行緒技術中建立執行緒的兩種方式執行緒
- iOS底層GCD (技術總結)iOSGC
- iOS多執行緒程式設計——GCD與NSOperation總結iOS執行緒程式設計GC
- 保證執行緒安全的技術執行緒
- GCD 與多執行緒程式設計GC執行緒程式設計
- 多執行緒(pthread,NSThread,GCD)執行緒threadGC
- 求JAVA多執行緒技術的電子版書籍Java執行緒
- 聊聊執行緒技術與執行緒實現模型執行緒模型
- IOS多執行緒iOS執行緒
- iOS 多執行緒iOS執行緒
- iOS 多執行緒--GCD 序列佇列、併發佇列以及同步執行、非同步執行iOS執行緒GC佇列非同步
- iOS底層原理 多執行緒之GCD 看我就夠了 --(10)iOS執行緒GC