[ SWIFT ]20160223-GCD-

A.NSOperation-最高階
A1.自定義:NSBlockOperation
A2.繼承:NSOperation

B.Grand Central Dispatch(GCD)是異步執行任務的技術之一-其次
一般將應用程序中記述的線程管理用的代碼在系統級中實現。開發者只需要定義想執行的任務並追加到適當的Dispatch Queue中,GCD就能生成必要的線程並計劃執行任務。由於線程管理是作為系統的一部分來實現的,因此可統一管理,也可執行任務,這樣就比以前的線程更有效率。

Dispatch Queue是用來執行任務的隊列,是GCD中最基本的元素之一。
B1.Dispatch Queue的種類:
    •    Serial Dispatch Queue,按添加進隊列的順序(先進先出)一個接一個的執行
    •    Concurrent Dispatch Queue,併發執行隊列里的任務
※Serial Dispatch Queue就是main Dispatch Queue
※Concurrent Dispatch Queuer就是global Dispatch Queue

簡而言之,Serial Dispatch Queue只使用了一個線程,Concurrent Dispatch Queue使用了多個線程(具體使用了多少個,由系統決定)。

B2.DISPATCH_QUEUE的查詢:
可以通過兩種方式來獲得Dispatch Queue,
(1)第一種方式是自己創建一個:
dispatch_queue_create(“”,0),0表示預設值:DISPATCH_QUEUE_SERIAL
let myQueue: dispatch_queue_t = dispatch_queue_create("com.xxx", nil),nil表示預設值:DISPATCH_QUEUE_SERIAL

let myQueue: dispatch_queue_t = dispatch_queue_create("com.xxx", DISPATCH_QUEUE_CONCURRENT)
(2)透過main_dispatch_queue/serial_dispatch_queue 或 global_dispatch_queue/concurrent_dispatch_queue查詢

B3.DISPATCH_QUEUE權限:
DISPATCH_QUEUE_PRIORITY_HIGH:使用者發起需求,需要馬上得到結果進行後續任務
DISPATCH_QUEUE_PRIORITY_DEFAULT:預設值
DISPATCH_QUEUE_PRIORITY_LOW:花費時間較多的任務,例如:下載動作
DISPATCH_QUEUE_PRIORITY_BACKGROUND:沒有立即性,可於後台執行幾分鐘甚至幾小時

B4.同、異步語法:
DISPATCH_SYNC()
DISPATCH_ASYNC()

B5.SERIAL_DISPATCH_QUEUE的調用順序:
Qos_Class_User_Interactive
Qos_Class_User_Initiated
Qos_Class_User_Background
Qos_Class_User_Uitility


C.NSThread

留言

熱門文章