版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一个Thread只能有一个MessageLoop被实例化。例如,在BrowserMain函数(该函数是Browser进程的入口函数)中实例化一个局部变量MessageLoop main_message_loop(MessageLoop:TYPE_UI),以后在该线程中任意位置可以通过调用MessageLoop:current()来获取该MessageLoop并调用MessageLoop:current()-Run()来执行该线程实体。这其中的技术就是线程局部存储(ThreadLocalPointer),当构造一个MessageLoop时,构造函数会将这个MessageLoop指针设置到这个线程
2、的ThreadLocalPointer 对象中,当MessageLoop对象析构时,会重置ThreadLocalPointer 对象。在多线程模型中最令人头疼的问题是“加锁”。为了极力避免锁的存在,Chromium的线程模型中加入了一种名为TASK的概念。当你期望你的一个逻辑(or函数)在某个线程中执行时,你可以在当前线程中创建一个Task对象,并将该逻辑放入到Task的Run方法中,最后通过调用“期望执行逻辑线程的PostTask方法”,就可以将该Task放入到期望线程的Task队列中了。这样做的好处是避免了“加锁”操作,使得多线程与单线程编程模型很好的结合在了一起。例如:MessageLo
3、op:current()-PostTask(task),该操作可以方便客户端将TASK放入到当前线程的消息队列中去执行。也可以SomeThread-message_loop()-PostTask(task),将task放到其他线程中去执行。在一般的多线程模型中,同步模式下,一切看上去没什么区别,但也丧失了多线程的优势;如果采用异步模式,那么你必须注册回调函数,小心管理对象的生命周期。在Chromium的多线程模型中,同步和异步的编程模型区别就不复存在了。例如:A线程需要B线程做一些事情,然后返回A线程继续做一些事情。在Chromium中可以这样做:生成一个Task,放到B线程的队列中,在该Ta
4、sk的Run方法最后,生成另一个Task,将该Task放回到A线程的队列中,由A来执行Chromium采用多进程的原因: 提高Browser的健壮性:包括单个Plugin、单个页面的崩溃导致整个Browser的崩溃问题; 提高Browser的安全性:基于多进程的安全模型(sandbox模型),Render进程默认是基于Sandbox模型的。Chromium中的主要进程: Browser进程。主进程,负责浏览器界面的显示,各个页面的管理,是所有其他进程的祖先,负责它们的创建和销毁等工作,它又且仅有一个。 Render进程。渲染进程,负责网页的渲染工作,WebKit/Blink的渲染工作主要在该进
5、程中完成,可以有多个。 GPU进程。有且只有一个,当且仅当GPU硬件加速打开的时候才会被创建,主要用于对3D图像加速调用的实现。 Pepper/NPAPI插件进程。在Chromium中,IPC用的是“有名管道”(Named Pipe),它通过类IPC:Channel封装了具体实现细节。Channel中有三个比较关键的角色 IPC:Sender IPC:Listener MessagePumpLibevent:Watcher顾名思义,Sender就是发送消息的接口;Listener是处理接收到消息的具体实现;Watcher中是一些事件回调函数,即当注册到libevent中的Read、Write事件被触发时会调用到Wathcer中的回调函数。在每个进程中,只能有一个线程来负责操作Channel,这个线程叫做IO线程,但是有些时候,我们需要从非IO线程与别的进程进行通信,这该如何是好呢?你一定会想到通过postTask将一个对Channel进行操作的Task放到IO线程队列中。这就是ChannelProxy类的作用。从接口上看,ChannelProxy的接口与Channel没啥区别,你可以像使用Channel一样使用ChannelProxy来Send你的消息。不仅如此,ChannelP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 查档评估人员岗位职责
- 仓储物流场所火灾案例及对主管部门追责介绍
- 大学生酗酒的危害
- DB13-T 5850-2023 机采棉生产技术规程
- DB1301-T 267-2018 温室草莓立体基质栽培技术规程
- 2024年建材级纤维素醚项目发展计划
- 北师大版小学数学四年级上册第3单元 乘法《卫星运行时间》示范课教学课件
- 《保险科技》课件-第一章 保险科技应用导论
- 2024年新型疫苗:亚单位疫苗项目发展计划
- 2024年涤纶短纤项目发展计划
- 期中测试卷(1-4单元)(试题)-2024-2025学年六年级上册数学人教版
- 2024-2030年中国肺癌行业市场发展趋势与前景展望战略分析报告
- 反诉状(业主反诉物业)(供参考)
- 12.1 认识内能教学设计- 2023-2024学年沪粤版九年级物理上册
- 苏教版数学五年级下册《六 圆 练习十五 》课件
- 贪吃对治汇总
- 人教精通版四年级上册英语单元重点词语及句子练习
- 卫生院重点岗位轮岗制度
- 南京旅游职业学院《烹饪工艺与营养》专业建设方案
- 房地产估价基本术语标准
- 冠心病介入手术随访表
评论
0/150
提交评论