美文网首页
Runloop 基础

Runloop 基础

作者: 应久 | 来源:发表于2019-03-21 10:00 被阅读0次

RunLoop概念: 

是通过内部维护的事件循环来对事件/消息进行管理的一个对象。事件循环的定义:1)没有消息需要处理时,休眠以避免资源占用。2)有消息需要处理时,立刻被唤醒。

runLoop的数据结构:

NSRunloop是CFRunLoop的封装,提供了面向对象的API。

NSRunloop位于foundation框架中,CFRunLoop位于CoreFoundation中。

runLoop图示:

main函数中的runloop是UIApplicationMain中实现的。

其中,等待不等于死循环。


事件循环Event Loop:

1)没有消息需要处理时,进程或者线程会进入休眠状态,而休眠状态的过渡相当于把当前线程的控制权转移给了内核态。

2)有消息需要处理时,就会有一个从用户态到内核态的状态切换。

3)维护的事件循环可以用来不断的处理消息或事件,对他们进行管理,如果没有消息进行处理,会从用户态切换到内核态,进行资源的休眠避免资源占用;当有消息进行处理时,会发生从内核态到用户态的切换,当前用户线程会被唤醒;

状态的切换是回答该问题的关键点。

用户态和内核态介绍:

我们的应用程序都是运行在用户态上的。

用户进程以及开发中使用的绝大多数API都是在用户层面的,而发生的系统调用需要使用关于操作系统以及底层内核相关的指令和API就相当于触发了系统调用,有些系统调用就会发生状态空间的切换。

这种切换空间是对计算机的一些资源调度、管理进行统一或者一致性的操作,避免特殊的异常,合理的安排资源调度;同时内核态的一些内容可以对用户态的线程进行调度、管理、进程间通信。

CFRunLoopSource:

source0:需要手动唤醒线程,在我们添加一个source0到对应runloop中,并不会主动唤醒当前线程,需要手动唤醒,把当前线程从内核态切换到用户态。

source1:具备唤醒线程的能力

相关文章

  • RunLoop

    Runloop基础知识 基本作用 重要说明 Runloop对象 Runloop与线程 获得Runloop对象 Ru...

  • 36.iOS底层学习之RunLoop

    本章提纲:1、RunLoop基础知识2、RunLoop的数据结构3、RunLoop的相关源码分析4、RunLoop...

  • OC--RunLoop应用例子

    知识点:1、RunLoop的基础知识2、RunLoop 与 NSTimer3、RunLoop 与 Perform ...

  • 面了20多家总结出来的部分iOS面试题(三)

    14. RunLoop的基础知识 RunLoop模式有哪些? 答 : iOS中有五种RunLoop模式 RunLo...

  • iOS面试点文章链接

    runtime基础方法、用法、消息转发、super: runtime 完整总结 runloop源码、runloop...

  • iOS-RunLoop究竟是怎么运作的

    RunLoop简介(Introduction) RunLoop是线程基础架构的一部分。RunLoop存在的目的是让...

  • RunLoop

    RunLoop是什么 字面意思运行循环 RunLoop是线程的基础架构部分RunLoop的目的,就是使得线程在有任...

  • iOS - Runloop

    Runloop —.基础知识部分 1.什么是Runloop? 答:RunLoop的实质是一个死循环(do-whil...

  • RunLoop应用篇

    基础理论请移步这两篇:RunLoop介绍篇RunLoop内部调用过程 一. runloop下timer,obser...

  • RunLoop

    1.Runloop基础知识 (RunLoop可以理解为就是为多线程而存在的) 1.1 RunLoop基本概念:运行...

网友评论

      本文标题:Runloop 基础

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