iOS 多线程基础 五、GCD

2018-03-28  本文已影响14人  PPFSaber

如果想多了解一下栅栏函数可以去看我的篇文章
栅栏函数 https://www.jianshu.com/p/c3edd6aa75a2

GCD 运行

如果想 深入了解执行结果可以看我写的另一篇文章
同步、异步、串行、并发https://www.jianshu.com/p/c0682d827366

- (void)demo1
{
dispatch_group_t group = dispatch_group_create();

dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
for (NSInteger i = 0;  i < 10;  i ++) {
NSLog(@"下载任务1 %ld",i);
}
});

dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
for (NSInteger i = 0;  i < 10;  i ++) {
NSLog(@"下载任务2 %ld %@",i,[NSThread currentThread]);
}

});


dispatch_group_notify(group, dispatch_get_global_queue(0, 0), ^{

NSLog(@"end");

});

}
//打印结果
     下载任务1 <NSThread: 0x600000260d80>{number = 3, name = (null)} 0
     下载任务2 <NSThread: 0x60400006b800>{number = 4, name = (null)} 0
     下载任务1 <NSThread: 0x600000260d80>{number = 3, name = (null)} 1
     下载任务2 <NSThread: 0x60400006b800>{number = 4, name = (null)} 1
     下载任务1 <NSThread: 0x600000260d80>{number = 3, name = (null)} 2
     下载任务2 <NSThread: 0x60400006b800>{number = 4, name = (null)} 2
     下载任务1 <NSThread: 0x600000260d80>{number = 3, name = (null)} 3
     下载任务1 <NSThread: 0x600000260d80>{number = 3, name = (null)} 4
     下载任务2 <NSThread: 0x60400006b800>{number = 4, name = (null)} 3
     下载任务1 <NSThread: 0x600000260d80>{number = 3, name = (null)} 5
     下载任务2 <NSThread: 0x60400006b800>{number = 4, name = (null)} 4
     下载任务1 <NSThread: 0x600000260d80>{number = 3, name = (null)} 6
     下载任务2 <NSThread: 0x60400006b800>{number = 4, name = (null)} 5
     下载任务1 <NSThread: 0x600000260d80>{number = 3, name = (null)} 7
     下载任务2 <NSThread: 0x60400006b800>{number = 4, name = (null)} 6
     下载任务1 <NSThread: 0x600000260d80>{number = 3, name = (null)} 8
     下载任务2 <NSThread: 0x60400006b800>{number = 4, name = (null)} 7
     下载任务1 <NSThread: 0x600000260d80>{number = 3, name = (null)} 9
     下载任务2 <NSThread: 0x60400006b800>{number = 4, name = (null)} 8
     下载任务2 <NSThread: 0x60400006b800>{number = 4, name = (null)} 9
     end <NSThread: 0x60400006b800>{number = 4, name = (null)}

GCD 核心概念:将任务添加到队列,指定任务执行的方法

小结:

上一篇 下一篇

猜你喜欢

热点阅读