美文网首页
有关RunLoop

有关RunLoop

作者: TAsama | 来源:发表于2019-03-28 13:27 被阅读0次

1. 什么是RunLoop?

RunLoop是通过内部维护的事件循环来对事件/消息进行管理的一个对象

  • 没有消息需要处理的时候, 休眠以避免资源占用
  • 有消息需要处理时, 立刻被唤醒

没有消息需要被处理时, 系统会将当前线程所有权转化为内核态, 当有消息需要处理时, 系统会将当前线程的状态切换回用户态
所以RunLoop的循环并不是一个单纯的死循环, 而是通过状态切换, 达到没有消息是休眠, 有消息时唤醒的这样一个事件循环机制.

RunLoop的数据结构

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

  • CFRunLoop
  • CFRunLoopMode
  • Source/Timer/Observer
CFRunLoop
CFRunLoop的数据结构
CFRunLoopMode的数据结构
CFRunLoopObserver

观测时间点

  • kCFRunLoopEntry
  • kCFRunLoopBefore Timers
  • kCFRunLoopBeforeSources
  • kCFRunLoopBeforeWaiting
  • kCFRunLoopAfterWaiting
各个数据结构之间的关系
RunLoop中各个数据结构之间的关系

可以看到, 一个RunLoop可以有多个Model, 而每个Model中又可以存放多个不同的事件, 我们在切换Model时, 其他Model的事件将不会被响应.

CommonMode的特殊性

NSRunLoopCommonModes

  • CommonMode不是实际存在的一种Mode
  • 是同步Source/Timer/Observer到多个Mode中的一种技术方案


    事件循环的实现机制

RunLoop与多线程

  • 一个线程对应一个RunLoop
  • 线程默认是没有RunLoop的
  • 常驻线程的实现

相关文章

  • 有关RunLoop

    1. 什么是RunLoop? RunLoop是通过内部维护的事件循环来对事件/消息进行管理的一个对象 没有消息需要...

  • 实例化讲解RunLoop

    转自此处 实例化讲解RunLoop 之前看过很多有关RunLoop的文章,其中要么是主要介绍RunLoop的基本概...

  • IOS---实例化讲解RunLoop

    实例化讲解RunLoop 之前看过很多有关RunLoop的文章,其中要么是主要介绍RunLoop的基本概念,要么是...

  • Runloop

    特点: 1.runloop和线程有关,一个线程里只有一个runloop,所以不同的runloop会出现在不同的线程...

  • Runloop

    Runloop 是和线程紧密相关的一个基础组件,是很多线程有关功能的幕后功臣。 Runloop 基本概念 Runl...

  • RunLoop

    RunLoop Runloop 是和线程紧密相关的一个基础组件,是很多线程有关功能的幕后功臣。尽管在平常使用中几乎...

  • Runloop的内部结构与运行原理

    什么是Runloop Runloop顾名思义,就是运行循环。首先它根程序运行过程有关系,其次它是一种转圈圈的效果。...

  • runloop的理解

    runloop与线程有关,他是一个处理事件的循环,运行事件处理程序来响应传入的时间 runloop的目的是当有事件...

  • timer

    每个NSTimer其实是被添加在所在线程的runloop中,而runloop对timer是一种强持有关系。也就是说...

  • 线程知识 和 RunLoop简单知识

    我的博客: 博客链接 上面有关于 线程 和 RunLoop的知识,请大家多多指点。

网友评论

      本文标题:有关RunLoop

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