Global Central Dispatch
教學連結
使用 DispatchWorkItem 進行可取消任務的延遲工作
使用 DispatchGroup 進行分組或者鏈接任務
使用 DispatchSemaphore 等待異步任務
serial、concurrent 是針對在同一個 queue 內的 Task 產生效果
serial:Task 會依序執行
concurrent:Task 不會依序執行
sync、async 是針對 queue 產生的效果
sync:queue 依照前後順序執行
async:queue 不會依照前後順序執行
優先級:DispatchQoS
以前 GCD 的默認隊列優先級有四個:
現在改為了 QoSClass 列舉
現在通常使用 QoS 為以下四種,從上到下優先級依次降低
User Interactive: 和用戶交互相關,比如動畫等等優先級最高。比如用戶連續拖拽的計算
User Initiated: 需要立刻的結果,比如push一個ViewController之前的數據計算
Utility: 可以執行很長時間,再通知用戶結果。比如下載一個文件,給用戶下載進度
Background: 用戶不可見,比如在後台存儲大量數據
semaphore
主要有三個 function
dispatch_semaphore_create : 建立 semaphore 並設定初始 count
dispatch_semaphore_wait : 等待信號,遇到時先將 count - 1。然後若 count < 0 則卡住線程給他等,直到 count >= 0 才放行
dispatch_semaphore_signal : 發送信號,將 count + 1
Last updated