美文网首页
调度组,一次性执行操作的使用

调度组,一次性执行操作的使用

作者: 不会打滚儿的狮子 | 来源:发表于2016-07-03 16:03 被阅读28次

-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event{    

//创建一个调度组   

dispatch_group_t group = dispatch_group_create();    

//把任务添加到调度组中    dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{       

 NSLog(@"下载A%@",[NSThread currentThread]);   });    

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

  NSLog(@"下载B%@",[NSThread currentThread]);   });    

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

NSLog(@"下载C%@",[NSThread currentThread]);   });    

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

NSLog(@"下载D%@",[NSThread currentThread]);    });

//dispatch_group_notify 当调度组里的所有的任务执行完成后, 执行dispatch_group_notify这个函数里写的任务.    

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

NSLog(@"在%@中更新UI,提示已下载完成",[NSThread currentThread]);        });    });}

打印如下:

2016-07-03 15:59:49.564 调度组的使用[4577:320369] 下载A{number = 3, name = (null)}

2016-07-03 15:59:49.564 调度组的使用[4577:320385] 下载C{number = 5, name = (null)}

2016-07-03 15:59:49.564 调度组的使用[4577:320379] 下载B{number = 2, name = (null)}

2016-07-03 15:59:49.564 调度组的使用[4577:320384] 下载D{number = 4, name = (null)}

2016-07-03 15:59:49.566 调度组的使用[4577:320225] 在{number = 1, name = main}中更新UI,提示已下载完成

一次性执行操作:

-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event{

dispatch_async(dispatch_get_global_queue(0, 0), ^{

[self once];

});

dispatch_async(dispatch_get_global_queue(0, 0), ^{

[self once];

});

dispatch_async(dispatch_get_global_queue(0, 0), ^{

[self once];

});

dispatch_async(dispatch_get_global_queue(0, 0), ^{

[self once];

});

}

-(void)once{

static dispatch_once_t onceToken;

/**

dispatch_once : 保证block 里面的任务代码只执行一次

参数一  dispatch_once_t  token  标识

参数二  要执行的代码任务

*/

dispatch_once(&onceToken, ^{

NSLog(@"一次执行%@",[NSThread currentThread]);

});

NSLog(@"end");

}

相关文章

  • 调度组,一次性执行操作的使用

    -(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)...

  • GCD-调度组

    如果有多个执行任务,我们希望他们都执行完成后执行某一操作,可以采用调度组。 1、创建调度组: 2、创建并发任务: ...

  • Linux-11 计划任务与日志轮转(ssh scp))

    计划任务分为一次性和循环性的计划任务 一、一次调度执行-----at 一次性调度执行 at---实战 循环调度执行...

  • 多线程03 阻塞barrier 延迟 一次性 单例 调度组 NS

    阻塞barrier 延迟 一次性 单例 调度组 NSOperation 同时并发数 依赖操作 模拟网络延迟 GCD...

  • GCD group 的使用

    group 头文件中函数的解析: 调度组在项目中的使用(调度组的基本使用) 调度组:调度组是用来协调一个或多个任务...

  • iOS之浅谈GCD

    GCD的基本思想 GCD的基本思想是将操作放在队列中去执行(1)操作使用block定义。(2)队列负责调度任务执行...

  • GCD dispatch_barrier_async和dispa

    1、栅栏函数使用场景 异步执行两组操作,且第一组操作(多个任务)执行完成后,才开始执行第二组操作(多个任务)。 2...

  • 数据库优化

    1、在子线程执行操作2、语句的拼接使用StringBuilder代替String3、使用事务一次性提交多个执行语句...

  • ios 信号量同步多个并行操作

    上面requestA、requestB、requestC加了信号量同时使用GCD多线程的调度组后,他们也是异步执行...

  • at计划任务

    一次性调度执行 atyum -y install at.86_64 安装at命令 systemctl s...

网友评论

      本文标题:调度组,一次性执行操作的使用

      本文链接:https://www.haomeiwen.com/subject/pjccjttx.html