GCD之主队列、全局并发队列、以及同步任务的执行

 主队列: 专门负责在主线程上调度任务,不会在子线程上调度任务,在主队列不允许开新线程。
主队列的特点:只在主线程运行,不开新线程。
异步执行:会开新线程,在新线程执行。
异步执行特点:不需要马上执行。
异步主队列:不会开辟新线程,只在主线程上顺序执行。
异步主队列的特点:主队列上的任务不会马上执行而是只把任务放到主队列,等线程有空时才去执行。
同步执行特点:不会开辟新线程,会马上执行。

主队列同步执行特点:会因为主队列和所在方法的相互等待造成死锁,引起线程阻塞。

全局队列与并发队列的区别:

1. 全局队列没有名称,并发队列有名称。
2. 全局队列能供所有的应用程序共享。
3. 在MRC开发中,全局队列不需要释放,但是并发队列需要释放。
二者调度任务的方式相同。
注意:并发队列有名称,可以方便系统运行出错时根据队列名称在日志中进行查找。
GCD默认已经提供了全局的并发队列,供整个应用使用,不需要手动创建。使用dispatch_get_global_queue函数获取全局的并发队列。
dispatch_queue_t dispatch_get_global_queue(dispatch_queue_priority_t  priority, unsigned long flags);
priority: 队列的优先级设为0即可  flags:此参数暂时无用,用0即可。举例如下:
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);  // 获得全局并发队列
全局并发队列的优先级:
#define DISPATCH_QUEUE_PRIORITY_HIGH 2 // 高
#define DISPATCH_QUEUE_PRIORITY_DEFAULT 0 // 默认(中)
#define DISPATCH_QUEUE_PRIORITY_LOW (-2) // 低
#define DISPATCH_QUEUE_PRIORITY_BACKGROUND INT16_MIN // 后台
GCD中获取串行队列有2种路径
使用dispatch_queue_create函数创建串行队dispatch_queue_t 
dispatch_queue_creat
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值