- 博客(5)
- 资源 (3)
- 收藏
- 关注
原创 宽窄接口分离的代码
templateclass wrap : public narraw{public: virtual wide& toWide() = 0; virtual const wide& toWide() const = 0;protected: ~warp(){}};templateclass rich : public wide, wrap{ virtual wide& t
2006-01-27 12:10:00 2015
原创 从每日构造到持续继承
我总是向别人强调每日构造的重要性,也总是强调要自动化--自动化到一次双击,或者一个脚本,就能生成软件的安装包,甚至软件的部署!是的,对于需要部署的软件来说,安装包不是终点,每日构造成功的标志是的部署成功,并且冒烟测试通过。如果这一切任何一个步骤出了问题,那都意味这心跳骤停! 然而,我的这种宣传并没有起到很好的效果,很多人认为,每日构造,就是每日生成release版本的二进制文件,e
2006-01-16 12:55:00 2826
原创 COM,为什么我读不懂你的心
又遇到郁闷的事情:有一个线程,入口大致如下:th_main() { while(conditon) svc();}struct ComPair{ ComPair(){ ::CoInitializeEx(0, COINIT_MULTITHREADED);} ~ComPair(){::CoUninitialize();}};svc(){ComPair com_p
2006-01-16 11:23:00 1900
原创 boost::condition 使用的注意点
进入互斥区的代码{ boost::mutex::scoped_lock guard(m_lock); ..... m_condition.wait(m_lock); ......}这里需要注意的是,当wait返回以后,guard已经失效了,不能够再安全地进行需要互斥的的操作了,为了争用操作的互斥,必须再次获得锁,类似:do{ boost::mutex::scoped_lock gu
2006-01-10 13:40:00 6178 2
原创 程序库随想
我们总是希望有这样一个库:它能够让我们方便的完成某个任务,如果A库使用起来比B库简单那么一点点,我们就更愿意使用A。因此,我们也经常干这样的事情:把一个现有的库做一个薄封装,从而使用起来更适合当前的编程环境。 一般而言,简单的库总是更好的,然而这并不是一定的。我总是能听到一些程序员抱怨:为什么XX库的YY功能不能预先提供一个最简单的使用方式,非要程序员再手工做一些工作。我想,这有两个解
2006-01-10 10:35:00 2089 1
CPU Cache Page-Coloring
2015-10-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人