美文网首页
ios--GCD中队列和线程

ios--GCD中队列和线程

作者: 简鱼7819 | 来源:发表于2019-12-04 18:15 被阅读0次

1,主队列dispatch_get_main_queue()

获取主队列

dispatch_queue_t queue = dispatch_get_main_queue();

1.1、主队列执行异步任务

主队列异步

结果打印

主队列异步执行结果

可以看出currentThread都是main主线程,异步没有开辟新线程。同时任务执行的任务方式是顺序执行,也就是串行。

1.2、主队列执行同步任务

结果App崩溃,原因便是主队列同步执行容易阻塞主线程,因为代码任务需要马上执行,但是主线程正在执行代码任务的方法体,因此代码任务就必须等待,而主线程又在等待代码任务的完成好去完成下面的任务,因此就形成了相互等待,造成了死锁

综上所述,如果想要运用主队列,获取主队列并添加异步任务,同时添加多个任务,任务是顺序串行执行的。主队列不允许添加同步任务。

2,串行队列

2.1,串行队列执行同步任务

在主线程中依次执行任务,不会开启新线程

2.2,串行队列执行异步任务

结果是创建新线程执行的任务,但是在新建的线程中是依次执行的任务。

综上可以看出,串行队列里无论是异步还是同步都是顺序执行任务的,异步会创建新线程。

3,并行队列

3.1,并行队列执行同步任务

不开启新线程,在main线程执行。顺序打印!

3.2,并行队列执行异步任务

开启了新线程,任务不是顺序执行的!

相关文章

  • ios--GCD中队列和线程

    1,主队列dispatch_get_main_queue() 获取主队列 dispatch_queue_t que...

  • 队列和线程

    [iOS多线程中,队列和执行的排列组合结果分析] 多线程中的队列有:串行队列,并发队列,全局队列,主队列。 执行的...

  • iOS线程、队列与死锁

    iOS中关于线程和队列,有一些概念:队列、串行队列、并发队列、主线程、主队列、任务、同步、异步。这些概念的意义和联...

  • 微任务和宏任务

    JS是单线程的,可以把这个线程叫做主线程,主线程中包含宏任务队列和微任务队列,宏任务所在的队列就叫宏任务队列,微任...

  • 主线程相关、performSelector相关

    串行队列:1、自己创建2、主队列,特殊的串行队列(和主线程相关联),放在主队列中的任务,都会放到主线程中执行 主队...

  • 深入浅出 GCD 线程使用

    串行与并行 同步和异步针对的是线程队列,所谓的线程队列可以理解为一组线程的数组。 串行队列:队列中是事件有序执行,...

  • 面试题

    队列和线程的关系 1.往主队列提交Block,无论是sync,还是async,都是在主线程中执行。2.往非主队列中...

  • iOS 队列与线程

    队列和线程是在iOS开发中不可避免的,那么队列与线程有哪些关系呢? 给队列添加任务有四种方式:串行队列中执行同步任...

  • sleep0的思考

    在操作系统中,线程有等待、就绪和运行这几种状态,等待队列中的线程是不会参与到CPU的竞争,只有就绪队列中的线程会参...

  • 2019-06-17多线程爬虫

    分析:两类线程:下载(3),解析(3)内容队列:下载线程往队列中put数据,解析线程从队列get数据url队列:下...

网友评论

      本文标题:ios--GCD中队列和线程

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