1253990427chromium学习小结upload.ppt
《1253990427chromium学习小结upload.ppt》由会员分享,可在线阅读,更多相关《1253990427chromium学习小结upload.ppt(22页珍藏版)》请在三一办公上搜索。
1、Chromium学习分享,张锴,从多进程的角度看Chromium,从多线程的角度看Chromium,Chromium中线程的实现,Chromium中线程的实现,一个Thread只能有一个MessageLoop被实例化。例如,在BrowserMain函数(该函数是Browser进程的入口函数)中实例化一个局部变量MessageLoop main_message_loop(MessageLoop:TYPE_UI),以后在该线程中任意位置可以通过调用MessageLoop:current()来获取该MessageLoop并调用MessageLoop:current()-Run()来执行该线程实体。这
2、其中的技术就是线程局部存储(ThreadLocalPointer),当构造一个MessageLoop时,构造函数会将这个MessageLoop指针设置到这个线程的ThreadLocalPointer 对象中,当MessageLoop对象析构时,会重置ThreadLocalPointer 对象。,线程中的自定义任务TASK,在多线程模型中最令人头疼的问题是“加锁”。为了极力避免锁的存在,Chromium的线程模型中加入了一种名为TASK的概念。当你期望你的一个逻辑(or函数)在某个线程中执行时,你可以在当前线程中创建一个Task对象,并将该逻辑放入到Task的Run方法中,最后通过调用“期望执行
3、逻辑线程的PostTask方法”,就可以将该Task放入到期望线程的Task队列中了。这样做的好处是避免了“加锁”操作,使得多线程与单线程编程模型很好的结合在了一起。例如:MessageLoop:current()-PostTask(task),该操作可以方便客户端将TASK放入到当前线程的消息队列中去执行。也可以SomeThread-message_loop()-PostTask(task),将task放到其他线程中去执行。,多线程的同步异步操作,在一般的多线程模型中,同步模式下,一切看上去没什么区别,但也丧失了多线程的优势;如果采用异步模式,那么你必须注册回调函数,小心管理对象的生命周期。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 1253990427 chromium 学习 小结 upload
链接地址:https://www.31ppt.com/p-2903949.html