美文网首页
RunLoop底层原理

RunLoop底层原理

作者: iOS白水 | 来源:发表于2019-05-10 11:27 被阅读0次
image.png

RunLoop与线程
1、每一条线程都有唯一的一个与之对应的RunLoop对象
2、RunLoop保存在一个全局的Dictionary里,线程作为Key,RunLoop作为Value
3、线程刚创建时,并没有RunLoop对象,RunLoop会在第一次获取她时创建
4、RunLoop会在线程结束的时候销毁
5、主线程的RunLoop已经自动获取(创建),子线程默认没有开启RunLoop

CFRunLoopModeRef常见的Mode

1、KCFRunLoopDefaultMode(NSDefaultRunLoopMode):App的默认Mode,通常主线程是在这个Mode下运行的
2、UITrackingRunLoopMode:界面跟踪 Mode,用于 ScrollView 追踪触摸滑动,保证界面滑动时不受其他 Mode 影响
vv3.kCFRunLoopCommonModes //这是一个占位用的Mode,不是一种真正的Mode 代表上面两种状态

RunLoop有几种状态

kCFRunLoopEntry = (1UL << 0), // 即将进入RunLoop
kCFRunLoopBeforeTimers = (1UL << 1), // 即将处理Timer
kCFRunLoopBeforeSources = (1UL << 2), // 即将处理Source
kCFRunLoopBeforeWaiting = (1UL << 5), //即将进入休眠
kCFRunLoopAfterWaiting = (1UL << 6),// 刚从休眠中唤醒
kCFRunLoopExit = (1UL << 7),// 即将退出RunLoop

线程保活:
thread{
NSRunLoop *myLoop = [NSRunLoop currentRunLoop];
[myLoop addPort:[NSPort port] forMode:NSDefaultRunLoopMode];//添加常驻线程
[myLoop run];//这种不退出 线程保活
}

好处:
避免多次创建线程或者线程轮询的开销,run loop在无事件处理时可以自动进入睡眠状态,降低CPU的能耗

参考:
RunLoop线程保活、启动
https://www.jianshu.com/p/24f875775336
https://github.com/SunshineBrother/JHBlog/blob/master/iOS%E7%9F%A5%E8%AF%86%E7%82%B9/iOS%E5%BA%95%E5%B1%82/8%E3%80%81RunLoop.md

相关文章

  • Today面试

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

  • [iOS] 底层原理二 (Runtime、Runloop)

    底层原理一:(OC本质、KVC、KVO、Categroy、Block)底层原理二:(Runtime、Runloop...

  • [iOS] 底层原理五 (面试题目整理)

    底层原理一:(OC本质、KVC、KVO、Categroy、Block)底层原理二:(Runtime、Runloop...

  • Runloop

    Runloop 实现原理及应用iOS - RunLoop 底层源码详解及具体运用

  • RunLoop简介

    RunLoop简介 RunLoop底层实现原理 RunLoop接收输入事件的2种来源 RunLoop对象 开源的C...

  • 探寻RunLoop的本质

    iOS底层原理总结 - RunLoop 面试题 讲讲 RunLoop,项目中有用到吗? RunLoop内部实现逻辑...

  • RunLoop

    详细文章 xx_cc - iOS底层原理总结 - RunLoop 意一ineyee - RunLoop RunLo...

  • RunLoop相关

    iOS底层原理总结 - RunLoop解密 Runloop Runloop是一种在当前线程,持续调度各种任务的运行...

  • RunLoop底层原理

    一、RunLoop介绍: 1、什么是RunLoop? 2、什么是事件循环,怎么做到的? 3、RunLoop的作用:...

  • RunLoop底层原理

    CFRunloop的源码密码: 95pj官方解释:Run loops are part of the fundam...

网友评论

      本文标题:RunLoop底层原理

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