欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    1253990427chromium学习小结upload.ppt

    • 资源ID:2903949       资源大小:1.43MB        全文页数:22页
    • 资源格式: PPT        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    1253990427chromium学习小结upload.ppt

    Chromium学习分享,张锴,从多进程的角度看Chromium,从多线程的角度看Chromium,Chromium中线程的实现,Chromium中线程的实现,一个Thread只能有一个MessageLoop被实例化。例如,在BrowserMain函数(该函数是Browser进程的入口函数)中实例化一个局部变量MessageLoop main_message_loop(MessageLoop:TYPE_UI),以后在该线程中任意位置可以通过调用MessageLoop:current()来获取该MessageLoop并调用MessageLoop:current()-Run()来执行该线程实体。这其中的技术就是线程局部存储(ThreadLocalPointer),当构造一个MessageLoop时,构造函数会将这个MessageLoop指针设置到这个线程的ThreadLocalPointer 对象中,当MessageLoop对象析构时,会重置ThreadLocalPointer 对象。,线程中的自定义任务TASK,在多线程模型中最令人头疼的问题是“加锁”。为了极力避免锁的存在,Chromium的线程模型中加入了一种名为TASK的概念。当你期望你的一个逻辑(or函数)在某个线程中执行时,你可以在当前线程中创建一个Task对象,并将该逻辑放入到Task的Run方法中,最后通过调用“期望执行逻辑线程的PostTask方法”,就可以将该Task放入到期望线程的Task队列中了。这样做的好处是避免了“加锁”操作,使得多线程与单线程编程模型很好的结合在了一起。例如:MessageLoop:current()-PostTask(task),该操作可以方便客户端将TASK放入到当前线程的消息队列中去执行。也可以SomeThread-message_loop()-PostTask(task),将task放到其他线程中去执行。,多线程的同步异步操作,在一般的多线程模型中,同步模式下,一切看上去没什么区别,但也丧失了多线程的优势;如果采用异步模式,那么你必须注册回调函数,小心管理对象的生命周期。在Chromium的多线程模型中,同步和异步的编程模型区别就不复存在了。例如:A线程需要B线程做一些事情,然后返回A线程继续做一些事情。在Chromium中可以这样做:生成一个Task,放到B线程的队列中,在该Task的Run方法最后,生成另一个Task,将该Task放回到A线程的队列中,由A来执行,Chromium中进程的实现,Chromium采用多进程的原因:提高Browser的健壮性:包括单个Plugin、单个页面的崩溃导致整个Browser的崩溃问题;提高Browser的安全性:基于多进程的安全模型(sandbox模型),Render进程默认是基于Sandbox模型的。Chromium中的主要进程:Browser进程。主进程,负责浏览器界面的显示,各个页面的管理,是所有其他进程的祖先,负责它们的创建和销毁等工作,它又且仅有一个。Render进程。渲染进程,负责网页的渲染工作,WebKit/Blink的渲染工作主要在该进程中完成,可以有多个。GPU进程。有且只有一个,当且仅当GPU硬件加速打开的时候才会被创建,主要用于对3D图像加速调用的实现。Pepper/NPAPI插件进程。,Chromium中进程的IPC机制,在Chromium中,IPC用的是“有名管道”(Named Pipe),它通过类IPC:Channel封装了具体实现细节。Channel中有三个比较关键的角色IPC:SenderIPC:ListenerMessagePumpLibevent:Watcher顾名思义,Sender就是发送消息的接口;Listener是处理接收到消息的具体实现;Watcher中是一些事件回调函数,即当注册到libevent中的Read、Write事件被触发时会调用到Wathcer中的回调函数。,Chromium中进程的IPC机制,在每个进程中,只能有一个线程来负责操作Channel,这个线程叫做IO线程,但是有些时候,我们需要从非IO线程与别的进程进行通信,这该如何是好呢?你一定会想到通过postTask将一个对Channel进行操作的Task放到IO线程队列中。这就是ChannelProxy类的作用。从接口上看,ChannelProxy的接口与Channel没啥区别,你可以像使用Channel一样使用ChannelProxy来Send你的消息。不仅如此,ChannelProxy还提供了很多新的功能,例如发送同步消息,SyncChannel类。,WebKit中的网络资源申请过程,Chromium中的网络资源申请过程(红色为Blink代码),Chromium官网上Browser与Render进程之间的通信图,Chromium官网上Render进程申请网络资源的图片,Chromium代码中申请网络资源的过程,Chromium官网上net模块的实现,Chromium代码中net模块的实现,图太大,可见附件in_browser_side,Browser中线程与Render中线程,图太大,可见附件thread_start_uml_process,

    注意事项

    本文(1253990427chromium学习小结upload.ppt)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开