浅谈GCD

作者: mengyingguo | 来源:发表于2017-09-06 18:10 被阅读0次

GCD实现原理:

GCD有一个底层线程池,这个池中存放的是一个个的线程。之所以称为“池”,很容易理解出这个“池”中的线程是可以重用的,当一段时间后这个线程没有被调用胡话,这个线程就会被销毁。注意:开多少条线程是由底层线程池决定的(线程建议控制再3~5条),池是系统自动来维护,不需要我们程序员来维护(看到这句话是不是很开心?)

而我们程序员需要关心的是什么呢?我们只关心的是向队列中添加任务,队列调度即可。

• 如果队列中存放的是同步任务,则任务出队后,底层线程池中会提供一条线程供这个任务执行,任务执行完毕后这条线程再回到线程池。这样队列中的任务反复调度,因为是同步的,所以当我们用currentThread打印的时候,就是同一条线程。

• 如果队列中存放的是异步的任务,(注意异步可以开线程),当任务出队后,底层线程池会提供一个线程供任务执行,因为是异步执行,队列中的任务不需等待当前任务执行完毕就可以调度下一个任务,这时底层线程池中会再次提供一个线程供第二个任务执行,执行完毕后再回到底层线程池中。

• 这样就对线程完成一个复用,而不需要每一个任务执行都开启新的线程,也就从而节约的系统的开销,提高了效率。在iOS7.0的时候,使用GCD系统通常只能开5~8条线程,iOS8.0以后,系统可以开启很多条线程,但是实在开发应用中,建议开启线程条数:3~5条最为合理。

相关文章

  • GCD

    相关链接GCD使用经验与技巧浅谈

  • 浅谈GCD

    浅谈GCD1.什么是GCDGCDGrand Central Dispatch (GCD)是Apple开发的一个多核...

  • 浅谈GCD

    GCD实现原理: GCD有一个底层线程池,这个池中存放的是一个个的线程。之所以称为“池”,很容易理解出这个“池”中...

  • 浅谈GCD

    出来工作已经一段时间了,但是对于大四才转程序的我,对很多程序方面的问题还是似懂非懂。很多时候学习起来也很迷茫,不知...

  • 浅谈GCD

    1,任务和队列 任务:就是执行操作的意思,换句话说就是你在线程中执行的那段代码。在 GCD 中是放在 block ...

  • 浅谈GCD

    GCD是纯C语言的API,它所有的任务通过一个Block没有参数,没有返回值的函数完成的。 它可以用在同步或者异步...

  • iOS面试攻略,浅谈多线程开发2(GCD)

    之前写了一篇多线程开发的iOS 面试攻略,浅谈多线程开发1但是没有跟大家聊GCD 就是想把GCD单独放在一篇文章跟...

  • 浅谈GCD一

    1 线程进程和线程都是操作系统的概念,进程是应用程序的执行实例,每个进程都有私有的虚拟地址空间,代码,数据和其他系...

  • 菜鸟浅谈 GCD

    笔者是 iOS 开发的新手, 最近学习了一下 GCD (又称: 共产党), 怕忘了记录一下.先介绍一下 GCD, ...

  • [ios]浅谈gcd

    gcd是苹果推出的多线程处理技术。什么是线程呢,线程是cpu执行的汇编指令集合,由于一个cpu一次只能执行一个命令...

网友评论

      本文标题:浅谈GCD

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