GCD 简单使用(二)

系统默认有两个队列
dispatch_get_main_queue 串行
dispatch_get_global_queue 并行

dispatch_queue_t myQueue = dispatch_get_main_queue();

并发 分别有三中权限
dispatch_queue_t myQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
dispatch_queue_t myQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGT,0);
dispatch_queue_t myQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW,0);

dispatch_once  保证在应用生命周期中让代码永远只运行一次  主要用于写单例 
static dispatch_once_t onceToken;
dispatch_once(&onceToken,^{});

dispatch_after 等几秒钟执行
double afterSeconds = 2.0;
dispatch_time_t afterTime = dispatch_time(DISPATCH_TIME_NOW,afterSeconds * NSEC_PER_SEC);
dispatch_after(afterTime,dispatch_get_main_queue(),^{});   

group 和 notify  Dispatch Group机制允许我们监听一组任务是否完成:
dispatch_queue_t myQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFUILT,0);
dispatch_group_t group = dispatch_group_creat();

dispatch_group_async(group,queue,^{});
dispatch_group_async(group,queue,^{});

dispatch_group_notify(group,dispatch_get_main_queue(),^{});//都运行完后运行。


wait   等待一段时间看是否结束

diapatch_group_wait(group,DISPATCH_TIME_FOREVER);
dispatch_barrier_async 在他之前的任务运行完后它才运行 在它之后的任务必须等他运行完后才能运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值