Chromium 模型、线程介绍

2018-03-06  本文已影响104人  妖怪来了

多进程模型

沙箱模型

在页面多进程中,页面的渲染是运行在沙箱模型中的Render进程中实现的,这些渲染引擎没有访问本地资源的能力,可以保护渲染引擎被入侵。

多线程机制

几个重要的线程:

  1. chrome线程:进程的主线程,browser进程重要 主要是负责UI,当然也是管家;Render进程中则是管家兼处理WebKit渲染的,gpu进程中则负责处理绘图请求并调用OpenGL进行绘制工作。
  2. Chrome_IOThread/Chrome_ChildIOThread线程:用来接收其他进程的IPC消息和派发资深消息到其他进程。
  3. SignalSender线程:v8 JavaScript引擎中用于处理Linux信号的线程。

消息循环

chromium中需要处理三种类型的消息:chromium自定义任务,Socket,文件IO操作。

如何等待自定义任务

假设现在MessageLoop没有任务和消息需要处理,就需要等待自定义任务到来。不能盲目等待。chromium非常巧妙,他在MessagePumpLibEvent为例:在Linux上创建一个管道,等待读取这个管道的内容,当有新的自定义任务到来的时候,就写入一个字节到管道中,从而MessageLoop被唤醒,简单直接。

上一篇下一篇

猜你喜欢

热点阅读