您的位置:首页 > 其它

各浏览器呈现引擎的线程问题

2014-05-07 00:00 1016 查看
呈现引擎采用了单线程。几乎所有操作(除了网络操作)都是在单线程中进行的。记住这个特性可以帮助我们理解浏览器的一些工作现象。

在 Firefox 和 Safari 中,该线程就是浏览器的主线程。而在 Chrome 浏览器中,该线程是标签进程的主线程。就是说,除了chrome每个标签页是独立的呈现引擎,其他浏览器主引擎都是呈现引擎。这就是为什么 Chrome 速度那么快,而又那么吃内存的其中一个原因。

网络操作可由多个并行线程执行。并行连接数是有限的(通常为 2 至 6 个,以 Firefox 3 为例是 6 个)。

事件循环

浏览器的主线程是事件循环。它是一个无限循环,永远处于接受处理状态,并等待事件(如布局和绘制事件)发生,并进行处理。这是 Firefox 中关于主事件循环的代码:

while (!mExiting)
NS_ProcessNextEvent(thread);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: