主队列

作者: liu_bo | 来源:发表于2016-03-22 15:21 被阅读63次

特点

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

不会开启线程

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

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

队列获取

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

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

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

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");

}

相关文章

  • GCD的队列类型与NSOperationQueue的队列类型

    GCD的队列类型 并发队列自己创建的全局 串行队列主队列自己创建的 NSOperationQueue的队列类型 主...

  • iOS--GCD四大队列

    队列是FIFO,先进先出原则 原则上,GCD只有两种队列,串行队列和并发队列。全局队列是系统提供的一个并发队列,主...

  • iOS开发笔记-多线程的使用方法

    多线程方式一:GCD队列的3个种类: 自建队列: 分并行/串行 全局队列: 属于并行队列, 是系统默认创建的. 主...

  • Rabbit笔记1-Work Queues(Task Queue

    Spring AMQP API文档 Work Queues(Task Queues)简介 工作队列(任务队列)的主...

  • 消息队列应用-使用异步队列就解耦了吗

    消息队列作用一文介绍了为什么要使用消息队列。我们再来讨论下如何有效使用消息队列。 消息队列模式 目前主流消息队列主...

  • iOS开发—GCD笔记

    多线程,主GCD 串行队列(Serial Dispatch Queue,等待现有处理结束) 并行队列�(Concu...

  • 【Flask】简单的后台异步队列

    异步任务队列 异步队列输入 异步队列获取并执行 创建线程开始执行方法并返回进程号 主函数与flask main一起...

  • GCD

    GCD 队列与线程的关系 主队列和主线程 『ios』主线程 和 主队列的关系,绝对安全的UI操作,主线程中一定是主...

  • RabbitMQ 消息队列

    什么是 RabbitMQ MQ(Message Queue)消息队列 消息队列中间件,是分布式系统中的重要组件;主...

  • 消息队列 01 - 面试官对于消息队列的连环炮

    消息队列 01 - 面试官对于消息队列的连环炮 1. 引子 消息队列分布式系统中重要的组件,一种存放消息的容器,主...

网友评论

      本文标题:主队列

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