主进程

browser process: window creation, painting, network access, 主要业务逻辑代码在这里

子进程

renderers, plugins, GPU, ...

Blink rendering, javascript execute在单独的render进程执行, javascript binding, dom access也在render进程执行

默认进程模型会对每一个scheme+domain创建新的render进程,其它的进程按需创建

process model

  • 多进程模型
  • 一个站点一个进程模型
  • 单进程模型(可能有bug)

多进程模型,启动后会创建多个当前运行的进程,通过命令行参数来区别进程的作用

问题

  • 如果进程本身很大,启动组件后会创建很多个相同的进程,占用很多内存
  • 更严重的问题:有些进程是单例的,不能启多个,可能会有资源占用问题。比如链节点,一台电脑上不能同时启多个。

解决:CefSettings.browser_subprocess

参考:Application Structure

进程通信

CEF3组件创建的进程之间使用IPC通信,browser进程和render进程通过发送异步消息进行通信,javascript运行在render进程可以提供一个异步调用api在browser进程中进行处理。参考:Inter-Process Communtion

javascript集成