- Run Loop 观察者
- Run loop 入口
- Run loop 何时处理一个定时器
- Run loop 何时处理一个输入源
- Run loop 何时进入睡眠状态
- Run loop 何时被唤醒,但在唤醒之前要处理的事件
- Run loop 终止
- 手动添加观察者
|
|
- 每次运行 run loop,你线程的runloop对会自动处理之前未处理的消息,并通 知相关的观察者。具体的顺序如下:
- 1.通知观察者 run loop 已经启动
- 2.通知观察者任何即将要开始的定时器
- 3.通知观察者任何即将启动的非基于端口的源
- 4.启动任何准备好的非基于端口的源
- 5.如果基于端口的源准备好并处于等待状态,立即启动;并进入步骤 9。
- 6.通知观察者线程进入休眠
- 8.将线程置于休眠直到任一下面的事件发生:
- 某一事件到达基于端口的源
- 定时器启动
- Run loop 设置的时间已经超时
- run loop 被显式唤醒
- 9.处理未处理的事件
- 如果用户定义的定时器启动,处理定时器事件并重启 run loop。进入步骤 2
- 如果输入源启动,传递相应的消息
- 如果 run loop 被显式唤醒而且时间还没超时,重启 run loop。进入步骤 2
- 启动 run loop 只对程序的辅助线程有意义。一个 run loop 通常必须包含一个输入源或定时器来监听事件。如果一个都没有,run loop 启动后立即退出。
|
|