11 2012 档案
摘要:最近看了很多关于Webkit原理的博客和资料,大都是介绍整体构架和诸如资源加载、HTML解析、Rendering等服务端进程的原理。但是新版本的Webkit(Webkit2)是一个多进程模型,而不是过去的单进程模型。这些进程分为两类,分别是:服务端(WebProcess)和客户端(UIProcess)客户端资料的缺少使得我对客户端进程产生了兴趣,经过对代码的研究,找出了一点门道,这里分享给大家。首先介绍一下两个进程的关系顾名思义,服务端就是完成客户端发来的请求并回应,而客户端就是资源或功能的请求者,只不过他们不像Web服务器和浏览器一样处于不同的机器(一般都这样),他们只是两个进程而已。这样做
阅读全文
摘要:近日在研究webkit的时候发现了一个函数template<typename T> inline void deleteOwnedPtr(T* ptr){ typedef char known[sizeof(T) ? 1 : -1]; if(sizeof(known)) delete ptr;}一开始对这个函数非常费解,为什么作者不直接delete ptr;通过上stackoverflow提问然后查阅了一些资料后终于得到结果:这是用来防范错误释放incomplete type指针而导致的未知的行为。这样做之后,释放incomplete type指针将引发一个编译错误,...
阅读全文