庖解Chrome源码(1)——线程模型
很多人喜欢Chrome,喜欢它的简洁,喜欢它的“快”。 简洁大家一目了然,无需多言,这里重点要说的是它的“快”。什么是“快”呢?大概不少人第一反应就是cnBeta上的日经Javascript跑分贴,Chrome那叫一个快啊。(其实每次点开这类文章时,我都是想去同情一下我们可怜的IE同学的,不过最近IE9着实又让人充满了期待。)但Javascript跑分真的这么重要吗,我们真的能体会到很大的差距吗?反正我是感觉不太出来。那凭啥还说Chrome快呢?Chrome快就快在UI Responsive(UI响应性)上。说白了就是你双击一下桌面图标,它能很快启动起来(Firefox用户应该深有感触吧);点击某个超链接,它能瞬间给你弹出个新页面来(用IE的朋友也没少遇过假死的现象吧)。因此,Chrome并不只是个跑分的工具。那Chrome良好的UI Responsive是如何做到的呢?这就要得益于它的线程模型了。 为了避免重复制造轮子, 这里我并不打算阐述Chrome线程模型的总体框架,而是将更多的精力放在具体实现上 。对Chrome线程模型框架不熟悉的朋友可以阅读一下duguguiyu的 这篇文章 。有条件的朋友可以到 这里 去下载一份Chromium的源码,或者到 这里 在线查看。闲话少说, Let's Go! NO.1 Smart Pointers