• CEF相关


    自己总结的不一定对,还望大佬指点,及时更正

    1、一个CefClient 对应一个浏览器窗口

    2、一个CefBrowser 对应一个浏览器标签页

    (这里要注意:CefBrowser与Browser进程不是一个概念,不要混淆,后面会介绍Browser进程和Render进程)

    3、一个浏览器窗口有多个标签页,一个CefClient可以对应多个CefBrowser,创建CefBrowser时必须指定CefClient

    4、一个CefBrowser会启动一个Render进程,该Render进程负责该CefBrowser的HTML内容解析渲染和JS引擎处理

    5、一个Render进程会绑定一个CefV8Handler

    换句话讲三者一个整体,(CefBrowser、CefRenderProcessHandler、CefV8Handler)

    程序中我们只需CefBrowserHost::CreateBrowser(),函数后,会自动生成上面的一个整体。

    同时该函数,会将CefBrowser与指定CefClient绑定。

    6、由于CefBrowser与Render进程不在一个进程中,虽然二者为一个整体,但是不在一个进程中,可通过消息进行传递,也就是Browser进程与Render进程通讯,Browser进程也就是主进程,主进程中启动Browser,二者为同一个进程中

    换句话讲:CEF程序启动,会产生一个主进程多个子进程,其中每个CefBrowser实例在主进程中创建并使用,每创建一个CefBrowser会增加一个Render子进程,负责对该CefBrowser的HTML内容进行渲染和JS处理。并且必要时候,通过消息投递给主进程(也就是Browser进程),主进程中,与该CefBrowser绑定的CefClient接收该消息,并进行处理。

    使用时候,可以一个CefBrowser对应一个CefClient,也可以多个CefBrowser对应一个CefClient,多对一的时候,可能会有延迟但不阻塞的情况,例如上一个Render子进程投递消息后,CefClient处理该消息时间较长,花费10s后,再次读取消息时,才会处理第二个子进程投递来的消息,这个没有验证,有兴趣的同学可以试试。

  • 相关阅读:
    【JavaScript】面试手撕深拷贝
    部署vue element-ui admin报错(vue2)
    msvcr120.dll缺失怎么修复,快速修复msvcr120.dll丢失的三个有效方法
    QT集成Protobuf
    一道线段树相关算法题
    Go基础学习【1】
    哈哈Niushop v5值得我们期待吗?新版本这几点我爱了!
    模方4.1.0新版本正式上线啦!
    内网穿透方法有哪些?路由器端口映射外网和软件方案步骤
    【动态规划】独立任务最优调度问题
  • 原文地址:https://blog.csdn.net/u011109761/article/details/130897490