Dispatch 方法詳解
Dispatch_queue
dispatch_queue是一種執行處理的等待對列。按照追加順序(FIFO)執行處理。
dispatch_queue分為兩種,一種是等待當前正在處理的任務完成後再執行下一個任務,每次只執行一個任務,按 照順序執行,稱為Serial Dispatch Queue,另一種就是不等待,意思就是不管當前的任務是否執行完畢都開始執 行下一個任務,任務併發執行,稱為Concurrent Dispatch Queue.
當變數queue為Concurrent Dispatch Queue時,雖然不用等待處理結束,就可以並行執行多個任務。但並行執行 的處理數量取決於當前的系統的狀態。系統只生成所需的執行緒執行處理,處理結束後,系統會結束不需要的執行緒。
兩種形式的queue根據使用者需求來定義,如果希望按順序執行,那麼就建立Serial Dispatch Queue,如果希望並行 執行,並且執行順序無關重要,那麼就可以使用Concurrent Dispatch Queue。
/////////////////////////
////第一個引數為queue的名稱,命名規則為FQDN,應用名稱ID的倒序+queue名字
////第二個引數為Null 建立Serial dispatch queue; 如果為DISPATCH_QUEUE_CONCURRENT 則建立的是Concurrent queue;
//序列佇列
dispatch_queue_t mySerialQueue = dispatch_queue_create("com.cnblogs.yybz.gcd.serialQueue",NULL);
dispatch_async(mySerialQueue, ^{
NSLog(@"hello GCD");
});
//並行佇列
dispatch_queue_t myConcurrentQueue = dispatch_queue_create("com.cnblogs.yybz.gcd.concurrentQueue", DISPATCH_QUEUE_CONCURRENT);
dispatch_async(myConcurrentQueue,^{
NSLog(@"hello");
Dispatch 方法詳解
Dispatch_queue
dispatch_queue是一種執行處理的等待對列。按照追加順序(FIFO)執行處理。
dispatch_queue分為兩種,一種是等待當前正在處理的任務完成後再執行下一個任務,每次只執行一個任務,按 照順序執行,稱為Serial Dispatch Queue,另一種就是不等待,意思就是不管當前的任務是否執行完畢都開始執 行下一個任務,任務併發執行,稱為Concurrent Dispatch Queue.
當變數queue為Concurrent Dispatch Queue時,雖然不用等待處理結束,就可以並行執行多個任務。但並行執行 的處理數量取決於當前的系統的狀態。系統只生成所需的執行緒執行處理,處理結束後,系統會結束不需要的執行緒。
兩種形式的queue根據使用者需求來定義,如果希望按順序執行,那麼就建立Serial Dispatch Queue,如果希望並行 執行,並且執行順序無關重要,那麼就可以使用Concurrent Dispatch Queue。
/////////////////////////
////第一個引數為queue的名稱,命名規則為FQDN,應用名稱ID的倒序+queue名字
////第二個引數為Null 建立Serial dispatch queue; 如果為DISPATCH_QUEUE_CONCURRENT 則建立的是Concurrent queue;
//序列佇列
dispatch_queue_t mySerialQueue = dispatch_queue_create("com.cnblogs.yybz.gcd.serialQueue",NULL);
dispatch_async(mySerialQueue, ^{
NSLog(@"hello GCD");
});
//並行佇列
dispatch_queue_t myConcurrentQueue = dispatch_queue_create("com.cnblogs.yybz.gcd.concurrentQueue", DISPATCH_QUEUE_CONCURRENT);
dispatch_async(myConcurrentQueue,^{
NSLog(@"hello");
});