[ 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
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
留言
張貼留言
您好:
歡迎到訪我的Blog,這裡有我的生活經驗、美好的回憶和程式開發經驗分享~
目前努力學習Swift中,希望你會喜歡Swift!
如果可以也請你留言給我一個鼓勵喔!
謝謝