2011年03月27日
WaitForMultipleObjects的轻量级模拟。代码
阅读全文
2011年03月17日
“事件”对象的一个轻量级实现,方法与“信号量”基本一样。class CSlimEvent{private: SRWLOCK m_lock; CONDITION_VARIABLE m_cv; BOOL m_manual; BOOL m_state;public: CSli
阅读全文
2011年03月16日
基于SRWLOCK和条件变量(Condition Variable)实现,需要windows vista及以上操作系统,编译时_WIN32_WINNT要大于0x0600。基本功能和用CreateSemaphore创建出来的差不多,不过不支持跨进程使用,也模拟不了WaitForMultipleObje
阅读全文
2011年02月11日
单件模式可能是所有设计模式中最简单的一个了,但在C++中,尤其是还要支持多线程的话,要想写一个正确的实现却并不容易,不信请看:class CSingleton{public:CSingleton(){_tprintf( _T("CSingleton::Constructor: Before
阅读全文
2010年12月16日
假如一个系统中有多个模块,不妨命名为Module1, Module2, Module3…, 毫无疑问这个系统的启动过程中需要初始化所有这些模块, 而退出时要销毁它们, 那应该用下面哪种方法来完成这个任务呢?A. 让这些模块都支持一个IModule, 然后定义一个IModule*类型的数组, 把这些模
阅读全文
2010年10月29日
可维护性我认为主要由两个方面构成, 一是可读性, 也就是代码要能让人看懂; 二是可调试性, 出了问题可以很快的找到原因. 市面上讲设计的书很多, 但大部分侧重于灵活性和可复用性, 比如面向对象设计和设计模式等. 灵活和可复用并没有什么错, 但我认为可维护要更重要一些, 试想如果一个模块非常灵活并被大
阅读全文
2010年10月28日
不多解释了,直接上代码吧。
阅读全文
2009年01月08日
让这个bug困扰了很久,前一段太忙只找了个临时解决方案而没有追究原因,今天终于把它搞清楚了。由于测试时只在多CPU系统上出现,我甚至一度怀疑它是CPU的bug😂 。两个c/s结构的网络通讯程序,服务器端使用完成端口模型,客户端使用阻塞模型,双方以一种客户端发送命令,服务器端处理,然后返回应答的方式
阅读全文
2009年01月06日
为了分析用户使用过程中出现的软件Bug,经常需要.dmp文件的帮助。一般我们会用WinDbg或adplus制作这个文件,可这两个工具都有点“太难”了,往往要费九牛二虎之力才能教会用户。而让程序在崩溃时自动转储或用Dr. Watson转储虽然使用简单,却只能做崩溃转储,对死锁之类的情况则无能为力。所以
阅读全文
2008年12月31日
当一个solution中的项目越来越多以后,管理编译选项,将成为一件很麻烦的事,单独对每个项目进行设置不仅繁琐,而且容易出错。但实际上,Visual Studio已经为我们提过了统一的管理界面----Property Manager。在visual studio中,每个c++项目的general属性
阅读全文