GCD实现原理

作者: 泥孩儿0107 | 来源:发表于2018-04-02 20:55 被阅读227次

4.runloop内部实现逻辑?

3.runtime如何通过selector找到对应的IMP地址

在寻找IMP的地址时,runtime提供了两种方法

IMP class_getMethodImplementation(Classcls, SEL name);IMP method_getImplementation(Methodm)

GCD实现原理:

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

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

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

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

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

相关文章

  • Today面试

    Runloop 底层原理Kvo 底层原理ARC 底层原理 如何实现GCD 底层原理Block 底层原理Aut...

  • 多线程与GCD执行原理

    多线程与GCD执行原理 GCD 含义 可以生成必要的线程并计划执行任务 实现原理 GCD有一个底层线程池,这个池中...

  • GCD实现原理

    4.runloop内部实现逻辑? 3.runtime如何通过selector找到对应的IMP地址 在寻找IMP的地...

  • 面试问题总结

    Runtime理解。 Runloop理解,结合计时器。 GCD常用的方法。 GCD的原理。 KVO和KVC的实现原...

  • iOS 攻略参考目录

    1.NSTimer的底层实现,如何实现一个NSTimer, GCD实现timer的原理?gcddispatch_s...

  • iOS开发-GCD多线程来写倒计时

    今天给各位猿友说一下怎么使用GCD来实现倒计时的功能效果,首先给大家简单介绍一下实现的原理:使用GCD创建定时器并...

  • 浅谈GCD

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

  • 多线程

    主要内容:1 GCD队列循环等待、多读单写、组任务2 NSOpertaion优点3 NSThread实现原理4 常...

  • iOS面试总结(初级)

    01:iOS推送机制,实现原理02:多线程编程,GCD,锁,同步异步队列03:property 各种关键字,以及...

  • 19年目标

    GCD、NSOperation、Block原理消息转发runtime

网友评论

    本文标题:GCD实现原理

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