`
optman
  • 浏览: 44125 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
文章列表
  在window和mac,甚至模拟器里都一切正常,就是在iPad机器上崩溃了。   libevent版本:2.0.11-stable     1.       在DNS解析时需要使用ARC4RANDOM算法生成transaction id,而ios自带的算法库有问题,会导致崩溃。还好,libevents提供了另一套替代的算法库,使用该算法库可以不崩溃。 Evutil_rand.c里,去掉_EVENT_HAVE_ARC4RANDOM定义这时,arc4random_buf和arc4random_addrandom与系统提供的实现命名冲突,修改一个名字即可,同时修改arc4r ...
很多浏览器都有这个功能,当你把鼠标移动到网页视频上,就可以看到顶部有一个按钮出现,弹出独立播放器。当你点击按钮,视频就弹出在新窗口播放了,这时候视频窗口的大小可以自由调整不再受页面的限制。 这是如何做到的呢? 首先想到的是,浏览器缩放缩放了页面的大小,正好可以显示视频窗口的大小。好像火狐有一个魔镜功能,可以实现网页简报既截取网页任意部分。 要做到这点,浏览器的外框程序必须是自己写的(国内的浏览器都是这样的)。如果浏览器不是自己的,能不能通过BHO来实现呢? 另一个想法是,把页面里视频相关的HTML代码提取出来,然后在一个新页面框架里显示。但是这样的话,就必须对页面代码的结构非常熟 ...
如何保证一个对象在释放后不会再被访问? 最简单的是使用带引用计数的智能指针,但是强引用会导致对象不会被释放。那么弱引用如何?弱引用允许对象被释放,弱引用必须先转成强引用才能对对象进行操作,如果转换失败,则表示对象已经被删除。 正好看到一篇文章“当析构函数遇到多线程──C++ 中线程安全的对象回调”,其大意是使用shared_ptr和weak_ptr来完成。对象必须使用shared_ptr来引用,weak_ptr必须先转成shared_ptr才能对对象进行操作。 几个相关的智能指针封装类 auto_ptr   可以自动完成指针的释放。问题是,auto_ptr允许 ...
Chromium允许渲染进程运行在Sandbox里,这样即便代码存在漏洞被网页利用了,也不会对系统造成威胁。 Chromium的Sandbox机制主要依赖于操作系统的安全机制,包括Restricted Token,Job Object,Windows Desktop,还有Integrity Level(Vista开始)。  Restricted Token Restricted Token继承自当前登录用户的Access Token,然后去掉了几乎大部分的权限(groups和privileges),使用该Token创建的进程基本就没有访问系统资源的能力了。 J ...
在前面介绍的Chrome Task类,可以让代码在指定线程上运行。 另一种常见的场景就是发出一个异步请求,并想知道请求处理的结果。这时请求的处理过程虽然是在另一个线程上的,但是请求的结果却从(调用者)请求发起的线程上回来,并且请求是可以取消的。 这是很有用的,比如我们经常从界面上(UI线程)发起一个动作,该动作会在Worker线程执行,结束后会通过回调函数回来。这时的回调函数是运行在Work线程上的,直接操作界面是不行的(比如MFC对象就不允许跨线程访问),访问界面的成员变量也可能跟UI线程冲突(这时就必须使用Lock)。 最好呢,我们能转换一下线程,让回调函数在UI线程上运行,这样就可 ...
Windows程序是基于消息的,不管其封装形式如何,最后都要包含如下代码MSG msg; while(GetMesssage(&msg)) { TranslateMessage(&msg); DispatchMessage(&msg); }  大部分的工作都是在这个while循环里完成。 GetMessage获得一条消息,然后调 ...
在上一篇《Chrome线程模型》之后,我们来实际看一看代码。   多线程编程完全基于消息传递会比较麻烦,因为消息的封装和解析是比较麻烦的。不仅如此,被多个线程调用的其实是同一个对象的不同方法。比如 ...
多线程编程是非常复杂的,Chrome的多线程处理有很多值得借鉴的地方。这篇文章是Chromium项目中Threading的设计和说明文档,简单翻译和注释了一下,以帮助理解。    简单总结就是,不要启动太多线程而应该使用专用的公共线程,代码一定要搞清楚运行在哪个线程上,要有一个简单的方式在线程之间进行通讯。   原文地址  http://dev.chromium.org/developers/design-documents/threading   Chrome通过多线程来避免IO延迟阻塞而导致UI响应迟钝。Chrome避免通过互斥锁的方式来实现对象的线程安全,而是让对象只在一个线 ...
Global site tag (gtag.js) - Google Analytics