dispatch_queue_t concurrentQueue = dispatch_queue_create("my.concurrent.queue", DISPATCH_QUEUE_CONCURRENT);
NSLog(@"1");
dispatch_async(concurrentQueue, ^(){??
? ? NSLog(@"2");
[NSThread sleepForTimeInterval:5];
NSLog(@"3");});
NSLog(@"4");
輸出為:
2016-08-2511:50:51.601xxxx[1353:102804]12016-08-2511:50:51.601xxxx[1353:102804]22016-08-2511:50:56.603xxxx[1353:102804]32016-08-2511:50:56.603xxxx[1353:102804]4
再看:
dispatch_queue_t concurrentQueue = dispatch_queue_create("my.concurrent.queue", DISPATCH_QUEUE_CONCURRENT);
NSLog(@"1");
dispatch_async(concurrentQueue, ^(){? ?
? ? NSLog(@"2");
[NSThread sleepForTimeInterval:5];
NSLog(@"3");});
NSLog(@"4");
輸出為:
2016-08-2511:52:29.022xxxx[1392:104246]12016-08-2511:52:29.023xxxx[1392:104246]42016-08-2511:52:29.023xxxx[1392:104284]22016-08-2511:52:34.029xxxx[1392:104284]3
通過(guò)上邊的兩個(gè)例子蝙云,我們可以總結(jié)出:
dispatch_sync(),同步添加操作玷氏。他是等待添加進(jìn)隊(duì)列里面的操作完成之后再繼續(xù)執(zhí)行们颜。
dispatch_async ,異步添加進(jìn)任務(wù)隊(duì)列,它不會(huì)做任何等待