1.4. chromium源代码分析 - chromiumframe - 消息系列
2015-06-11 20:32
411 查看
Message framework 是对消息循环的封装和扩展,Chromium在消息循环中增加处理内部任务的工作。将内部工作处理寄生在Windows的消息循环中,会有一个问题,就是没有Windows自身消息,而有Chromium内部工作,此时内部动作就无法及时处理。Chromium这里定义了一个自定义消息kMsgHaveWork,用来在Chromium内部有工作的时候,驱动Windows的消息一直会运行。
从代码级别来说,Chromium内部工作队列被塞入工作时Post一条kMsgHaveWork消息。
计划工作的消息就是在 ScheduleWork 里Post的。
Message framework伪代码就是如下示例:
Chromium的Message pump(消息泵)是一个比较严谨,精细的循环,为了安全的让外部接入这个循环,Chromium使用委派模式,并被派生出MessageLoop。只要使用MessageLoop类就可以实现内部"工作"处理。
MessagePump 消息泵抽象基类 嵌套类Delegate委派类 提供外部使用。
MessagePumpWin 消息泵实现类 嵌套类有Observer观察者类和Dispatcher派发类。
MessageLoop 是Delegate委派类的派生类。
大致了解,等以后用到再来详细分析。
从代码级别来说,Chromium内部工作队列被塞入工作时Post一条kMsgHaveWork消息。
计划工作的消息就是在 ScheduleWork 里Post的。
Message framework伪代码就是如下示例:
for(;;) { // 1. 消息循环 if (PeekMessage()) { // 1.1 增加了分发器用于响应 if (dispatcher) { dispatcher->Dispatch(); } else { TranslateMessage(); DispatchMessage(); } } // 2. 内部工作 DoWork(); // 3. 内部延时工作 DoDelayWork(); // 4. 内部空闲工作 DoIdleWork(); // 5. 等待消息 WaitMessage(); }
Chromium的Message pump(消息泵)是一个比较严谨,精细的循环,为了安全的让外部接入这个循环,Chromium使用委派模式,并被派生出MessageLoop。只要使用MessageLoop类就可以实现内部"工作"处理。
MessagePump 消息泵抽象基类 嵌套类Delegate委派类 提供外部使用。
MessagePumpWin 消息泵实现类 嵌套类有Observer观察者类和Dispatcher派发类。
MessageLoop 是Delegate委派类的派生类。
大致了解,等以后用到再来详细分析。
相关文章推荐
- 二进制值和十六进制字符串相互转换的C++代码
- 写片刻代码用到的音乐播放器
- 迷宫问题——堆栈应用(C++版)
- 给四条线段,判断是否是矩形
- 进阶的Struts
- eclipse怎么设置字体大小
- ubuntu下安装eclipse,配置jdk环境变量仍然报错
- 类作用域中名字查找的思考(《C++ primer》第四版P382)
- 异步编程模式
- yii phpexcel <转>
- 源码分析:LayoutParams的wrap_content, match_parent, 和具体值
- Ubuntu下如何搭建完美Python开发环境?
- lua--函数.变长参数 and 具名实参
- 初学Spring心得体会
- 【学习笔记】【C语言】循环结构-while
- Flex通过struts跳转到其他页面
- 用strlen函数计算字符串的长度(C语言)
- 在同一台电脑使用两个github账户
- python fabric远程操作和部署
- Java知多少(89)列表和组合框