主队列

特点

专门用来在主线程上调度任务的队列

不会开启线程

以先进先出的方式,在主线程空闲时才会调度队列中的任务在主线程执行

如果当前主线程正在有任务执行,那么无论主队列中当前被添加了什么任务,都不会被调度

队列获取

- 主队列是负责在主线程调度任务的

- 会随着程序启动一起创建

- 主队列只需要获取不用创建

dispatch_queue_t queue = dispatch_get_main_queue();

1

会造成死锁的情况

- (void)gcdDemo1

{

dispatch_queue_t q = dispatch_get_main_queue();

NSLog(@"!!!!");

//同步 下面的代码必须执行了之后 才能继续执行后面的代码  但是主线程现在没空(没执行完gcdDemo1的代码 所以就会互相等待)

dispatch_sync(q, ^{

NSLog(@"%@",[NSThread currentThread]);

});

}

解决的办法

- (void)gcdDemo2{

NSLog(@"start");

// 获得主队列

dispatch_queue_t queue = dispatch_get_main_queue();

dispatch_async(dispatch_get_global_queue(0, 0), ^{

// 将任务同步添加到主队列中

dispatch_sync(queue, ^{

NSLog(@"%@",[NSThread currentThread]);

});

});

NSLog(@"over");

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • NSThread 第一种:通过NSThread的对象方法 NSThread *thread = [[NSThrea...
    攻城狮GG阅读 4,284评论 0 3
  • 文章目录GCD简介任务和队列GCD的使用步骤队列的创建方法任务的创建方法GCD的基本使用并行队列 + 同步执行并行...
    lusen_b阅读 1,748评论 0 1
  • 在这个日新月异的时代,每一天都在发生着巨大的改变,我们如同在大海里航行的小舟,只有跟随海浪的脚步,才能顺势而行,走...
    石榴小纪阅读 2,463评论 0 1
  • 中秋节了, 去水果市场,买了葡萄,桃子和石榴。 喜欢去水果市场,是因为它们新鲜,水灵灵的在那里朝你招手。每次去,姚...
    月月月月份牌阅读 2,635评论 0 1
  • 谢志海阅读 1,755评论 0 0