GCD自定義的佇列 和 全域性佇列的區別
阿新 • • 發佈:2019-01-31
// 建立一個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");
});