Run loop简析
来源:互联网 发布:手机网络共享怎么设置 编辑:程序博客网 时间:2024/06/04 21:36
一、前言
以前是Android开发,接触过Android里面的Looper、Handler、MessageQueue这些概念,尝试类比着来理解Run Loop。
二、为了解决什么问题
一句话总结,为了调度任务。
具体来说
- 可以在特定时间点执行某个任务(延后某个任务的执行)
- 可以在特定线程上执行某个任务(将某个任务分发到特定线程上去执行)
三、如何设计的
无论是Android中的Looper、Handler、MessageQueue,还是iOS中的Run Loop都最终实现了一个pipeline thread,流水线线程。简单来说,如下图所示:
Android
Android提供了两个主要工具类,Looper和Handler,让开发者可以快速的实现自己的流水线线程。
Looper负责在线程上运行一个消息循环,内部维护了一个消息队列(MessageQueue)。
Handler负责消息的发送与处理。
iOS
iOS中的Run Loop是高配版的pipeline thread。Source(Input Source、Timer Source)对应着MessageQueue,可以有多个Source。并且Run Loop整个生命周期都有回调,对应着Observer。一组Source和Observer又组成了Mode,一个线程可以在多个Mode中切换(比如NSEventTrackingRunLoopMode)。
0 0
- Run loop简析
- Run Loop
- Run Loop
- Run Loop
- Run Loop
- Run Loop
- Run Loop
- run loop
- Run Loop
- Run Loop
- run loop
- Run Loop
- Run Loop
- Run Loop
- run loop
- run loop
- run loop
- RUN Loop
- ruby基础记录
- 第四次上机实验
- SQLSERVER聚合函数
- Python 绘制函数图形
- C语言综合实践-----C程序操作
- Run loop简析
- php+memcached实现定时静态页面生成
- hdu-5880 AC自动机 + 差分优化
- No.7 week9 optimal division
- 阅读effective stl 有感(一)
- thinkphp实现上传图文消息中的图片的接口
- 四区例
- JSP三大指令
- 第二章 Spring MVC入门