1. 程式人生 > >GCD自定義的佇列 和 全域性佇列的區別

GCD自定義的佇列 和 全域性佇列的區別

 // 建立一個GCD 的佇列(這個是序列佇列)
    dispatch_queue_t queue = dispatch_queue_create("com.lcy.queue", NULL);
    /**
     自己建立的 雖然 也會走 非同步操作 但是 可以看出 不管怎麼走 都會 是 下一個操作總是依賴上一個操作

     2016-01-13 18:13:25.814 多執行緒[9617:191151] 非同步任務_1
     2016-01-13 18:13:25.814 多執行緒[9617:191112] -------- 非同步分割線 1 -------
     2016-01-13 18:13:25.815 多執行緒[9617:191112] -------- 非同步分割線 2 -------
     2016-01-13 18:13:25.815 多執行緒[9617:191112] -------- 非同步分割線 3 -------
     2016-01-13 18:13:25.815 多執行緒[9617:191112] -------- 分割線 -------
     2016-01-13 18:13:27.815 多執行緒[9617:191151] 非同步任務_2
     2016-01-13 18:13:27.815 多執行緒[9617:191151] 非同步任務_3
     2016-01-13 18:13:27.816 多執行緒[9617:191151] 非同步任務_4
     2016-01-13 18:13:29.817 多執行緒[9617:191112] 同步任務_1
     2016-01-13 18:13:29.817 多執行緒[9617:191112] -------- 同步分割線 1 -------
     2016-01-13 18:13:29.818 多執行緒[9617:191112] 同步任務_2
     2016-01-13 18:13:29.818 多執行緒[9617:191112] -------- 同步分割線 2 -------
     2016-01-13 18:13:29.819 多執行緒[9617:191112] 同步任務_3
     */
//全域性佇列 //queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); /** 如果是全域性的佇列 2016-01-13 18:15:20.922 多執行緒[9633:191968] -------- 非同步分割線 1 ------- 2016-01-13 18:15:20.922 多執行緒[9633:192071] 非同步任務_1 2016-01-13 18:15:20.922 多執行緒[9633:191968] -------- 非同步分割線 2 ------- 2016-01-13 18:15:20.922 多執行緒[9633:191968] -------- 非同步分割線 3 ------- 2016-01-13 18:15:20.923 多執行緒[9633:191968] -------- 分割線 ------- 2016-01-13 18:15:20.923 多執行緒[9633:192006] 非同步任務_3 2016-01-13 18:15:20.923 多執行緒[9633:192005] 非同步任務_4 2016-01-13 18:15:22.924 多執行緒[9633:191968] 同步任務_1 2016-01-13 18:15:22.924 多執行緒[9633:192071] 非同步任務_2 2016-01-13 18:15:22.925 多執行緒[9633:191968] -------- 同步分割線 1 ------- 2016-01-13 18:15:22.925 多執行緒[9633:191968] 同步任務_2 2016-01-13 18:15:22.925 多執行緒[9633:191968] -------- 同步分割線 2 ------- 2016-01-13 18:15:22.926 多執行緒[9633:191968] 同步任務_3 */
dispatch_async(queue, ^{ NSLog(@"非同步任務_1"); }); NSLog(@"-------- 非同步分割線 1 -------"); dispatch_async(queue, ^{ sleep(3); NSLog(@"非同步任務_2"); }); NSLog(@"-------- 非同步分割線 2 -------"); dispatch_async(queue, ^{ NSLog(@"非同步任務_3"); }); NSLog
(@"-------- 非同步分割線 3 -------"); dispatch_async(queue, ^{ NSLog(@"非同步任務_4"); }); NSLog(@"-------- 分割線 -------"); dispatch_sync(queue, ^{ sleep(2); NSLog(@"同步任務_1"); }); NSLog(@"-------- 同步分割線 1 -------"); dispatch_sync(queue, ^{ NSLog(@"同步任務_2"); }); NSLog(@"-------- 同步分割線 2 -------"); dispatch_sync(queue, ^{ NSLog(@"同步任務_3"); });