Run loops 的具体执行顺序(ios oc)
来源:互联网 发布:javac 运行java文件 编辑:程序博客网 时间:2024/05/17 01:10
Run loops 是线程相关的的基础框架的一部分。一个 run loop 就是一个事件处理 的循环,用来不停的调度工作以及处理输入事件。
使用 run loop的目的是让你的线程在有工作的时候忙于工作,而没工作的时候处于休眠状态。
Runloop还可以在loop在循环中的同时响应其他输入源,比如界面控件的按钮,手势等。
Run loop 模式是所有要监视的输入源和定时源以及要通知的 run loop 注册观察 者的集合。
可以将 Run loop 观察者和以下事件关联:
Run loop 入口
Run loop 何时处理一个定时器
Run loop 何时处理一个输入源
Run loop 何时进入睡眠状态
Run loop 何时被唤醒,但在唤醒之前要处理的事件
Run loop 终止
每次运行 Run loop,你线程的 Run loop 对会自动处理之前未处理的消息,并通知相关的观察者。具体的顺序如下:
1. 通知观察者 Run loop 已经启动。
2. 通知观察者任何即将要开始的定时器。
3. 通知观察者任何即将启动的非基于端口的源。
4. 启动任何准备好的非基于端口的源。
5. 如果基于端口的源准备好并处于等待状态,立即启动;并进入步骤 9。
6. 通知观察者线程进入休眠。
7. 将线程置于休眠直到任一下面的事件发生:
某一事件到达基于端口的源;
定时器启动;
Run loop 设置的时间已经超时;
Run loop 被显式唤醒。
8. 通知观察者线程将被唤醒。
9. 处理未处理的事件
如果用户定义的定时器启动,处理定时器事件并重启 Run loop。进入步骤 2。
如果输入源启动,传递相应的消息。
如果 Run loop 被显式唤醒而且时间还没超时,重启 Run loop,进入步骤 2。
10. 通知观察者 Run loop 结束。
Run loop 在你要和线程有更多的交互时才需要,比如以下情况:
使用端口或自定义输入源来和其他线程通信;
使用线程的定时器;
Cocoa 中使用任何performSelector...的方法;
使线程周期性工作。
- Run loops 的具体执行顺序(ios oc)
- Run loops的使用
- iOS开发笔记--Run Loops
- oc UI UIViewController的生命周期及iOS程序执行顺序
- iOS:多线程编程指南(二)--Run Loops
- iOS开发笔记--Run Loops(简洁版)
- OVM的run.test的执行顺序
- Run Loops
- Run Loops
- Run Loops
- Run loops
- Run Loops
- Run Loops
- Run Loops
- OC中多线程执行顺序的控制
- for()循环 具体执行顺序
- iOS程序的执行顺序
- ios程序的执行顺序
- 【ETL】拉链表算法
- linux下各种解压,压缩命令
- Jdbc实现页面分页查询功能
- 最长递增子序列
- java AES、SHA-1加密函数
- Run loops 的具体执行顺序(ios oc)
- css 透明背景 文字不透明
- 『NYIST』第九届河南省ACM竞赛队伍选拔赛[正式赛二]--Codeforces -35D. Animals
- 提升SQLite数据插入效率低、速度慢的方法
- python模块及包
- HDU 5101Select(暴力二分)
- __weak typeof(self) weakSelf=self; __strong typeof(weakSelf) strongSelf = weakSelf;
- Git笔记
- java.lang.UnsatisfiedLinkError解决方法汇集(转载)