3.RunLoop

作者: 海盗军长 | 来源:发表于2018-07-25 19:14 被阅读0次

什么是 runloop ?
runloop 是线程相关的基础框架的一部分。一个 runloop 就是一个事件处理的循环,用来不停的调度工作和处理输入事件。其实内部就是一个 do-while 循环,这个循环内部不断的处理各种任务(比如 Source、Timer、Observer)。使用 runloop 的目的,是让你的线程有工作的时候忙于工作,没有工作的时候处于休眠状态。

NSRunloop 和 CFRunloopRef

我们不能在一个线程中去操作另一个线程的 runloop 对象,那样可能会产生意想不到的后果。不过幸运的是,CoreFoundation 中的不透明类 CFRunloopRef 是线程安全的,而且两种类型的 runloop 完全可以混合使用。Cocoa 中 NSRunloop 类可以通过实例方法: -(CFRunloopRef )getCFRunloop;来获取对应的 CFRunloopRef 类,来达到线程安全的目的。
CFRunloopRef 类是在 CoreFoundation 框架里面的,它提供了纯 C 函数的 API,所有的这些 API 都是线程安全的。
NSRunloop 是基于 CFRunloopRef 的封装,提供了面向对象的 API,但是这些 API 不是线程安全的。

Runloop 和线程的关系

Run loop 正如其名,loop 表示某种循环,和 run 放在一起就表示一直在运行的循环。runloop 和线程是紧密相关的,可以说 runloop 就是专为线程而生的,没有线程,那 runloop 就没有存在的必要。runloop 是线程的基础架构部分,Cocoa 和 CoreFoundation 都提供了 runloop 对象,方便 配置和管理 runloop。每个线程都有一个 runloop 对象,包括程序的主线程都有与之对应的 runloop 对象。

相关文章

  • 3.RunLoop

    什么是 runloop ?runloop 是线程相关的基础框架的一部分。一个 runloop 就是一个事件处理的循...

  • 3.RunLoop

    概述 RunLoop作为iOS中一个基础组件和线程有着千丝万缕的关系,同时也是很多常见技术的幕后功臣。尽管在平时多...

  • 2.IOS之Runloop使用

    1.Runloop初体验 2.目录结构 3.RunLoop 的概念

  • IOS runloop 学习笔记

    这次学习 的内容是 runloop 1.runloop 是什么2.runloop 的作用3.runloop 和 线...

  • RunLoop的概念及作用

    1.RunLoop的概念及作用 2.RunLoop的使用 3.RunLoop的相关类 4.RunLoop的工作原理...

  • RunLoop

    1.RunLoop的概念及作用 2.RunLoop的使用 3.RunLoop的相关类 4.RunLoop的工作原理...

  • 三十三、Runloop之(二) Runloop对象的获取方式

    1.Runloop对象的获取方式 2.Runloop与线程的关系 3.Runloop获取的底层实现 3.1 CF...

  • iOS底层原理总结 - RunLoop

    面试题: 1.讲讲 RunLoop,项目中有用到吗?2.RunLoop内部实现逻辑?3.Runloop和线程的关系...

  • iOS面试题整理

    上海面试题1: 1.设计模式有哪些? 2.异步下载几张图片然后合并为一张显示,如何实现? 3.RunLoop和多线...

  • 面试题

    1.gcd何时会新起一个线程? 2.通过内存地址能否定位一个对象在堆区还是栈区 3.runloop的实现原理 4....

网友评论

      本文标题:3.RunLoop

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