Chromium源码浅析 --- Chromium的多线程机制

Chromium是一个多进程架构,里面包含Browser进程,Render进程和GPU进程等等,而在每个进程中又包含有丰富的线程,特别是在Browser进程中,由于Browser进程是其他所有进程的总管,负责的任务具备多样性和复杂性,比如响应用户的输入,与Render进程和GPU进程通信,打开或读取各种文件设备操作等等。如果把这些任务统统放在一个线程中去实现,就不能很好的发挥CPU多核的功能,另外,又会影响到用户界面的响应速度,这个会直接带给用户极差的用户体验。

基于以上考虑,Chromium除了采用多进程架构外,在每个进程中也引入了多线程。下面列举了Browser进程中常用的线程:

UI线程,该线程是程序运行的主线程,也是程序的入口点,用来监听用户的输入,并及时的给出响应。UI线程不能被阻塞,否则浏览器的界面就会停住,得不到任何响应。如果在该线程中有一些耗时的任务比如文件读写等需要处理,就发送任务给其他相应线程去执行,等到执行完毕后,把得到的结果发送回来即可。这就保证了浏览器每时每刻都能对用户的UI操作给予响应,从我们使用来看,相比其他浏览器,Chrome浏览器的界面响应速度应该是最快的。

IO线程,它的主要作用是负责与其他进程进行进程间通信(IPC),和负责下载Render进程需要的某些资源文件。

File线程,顾名思义,该线程负责各种文件的读写,比如保存下载的文件到磁盘上,从磁盘上读取缓存文件等等。

数据库线程,该线程主要进行数据库操作,Chromium中引进了数据库来保存某些数据,例如Cookies.

除了上述线程外,还存在一些其他的线程,比如历史记录线程,Http服务代理线程等等。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值