- 博客(7)
- 收藏
- 关注
原创 windows critical section (关键段)
不论是硬件临界资源,还是软件临界资源,多个线程必须互斥地对它进行访问。每个线程中访问临界资源的那段代码称为临界区(Critical Section)。 每个线程中访问临界资源的那段程序称为临界区(Critical Section)(临界资源是一次仅允许一个线程使用的共享资源)。每次只准许一个线程进入临界区,进入后不允许其他线程进入。不论是硬件临界资源,还是软件临界资源,多个线程必须互斥地对它
2011-06-30 23:57:00 3327
原创 原子访问--- Interlocked系列函数
我们都知道,windows是一个抢占式的多线程环境,因此系统可能会在任意时刻暂停一个线程,切换到另一个线程让新的线程继续执行。请看这段代码: // Interlocked.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include using namespace std;DWORD WI
2011-06-30 14:49:00 864
原创 关于windows 伪句柄
《windows核心编程》里提到了“伪句柄”一词,故名思议,它并不是真的句柄,有时候不会达到你想要的效果。边看代码,边解释代码如下: // 伪句柄.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include #include using namespace std;
2011-06-27 16:59:00 1490
原创 references count 以及copy on write
产生一个reference-counted String class 并不困难,但是必须注意许多细节。 比如 copy-on-write Pointers,References,以及copy-on-Write 考虑以下代码: String s1 = "hello"; char *p =&s1[1];
2011-06-09 16:34:00 578
原创 C++ Smart Pointers 和“与继承有关的”类型转换
我们真正想要知道的是如何能够使“smart pointer classes的行为”在“与继承相关的类型转换”上,能够和dumb pointers一样。答案很简单:不能够。Daniel Edelson 指出:smart pointers虽然smart,却不是pointers。是的,我们所能做的最好情况就是使用member templates来产生转换函数,然后再在其中出现模棱两可的时候使用
2011-06-07 22:23:00 735
原创 C++ virtual constructors virtual copy constructors 以及non-memeber functions的行为虚化
C++中,所谓的 virtual constructors是某种函数,视其获得的输入,可产生不同类型的对象。-----《more effective c++》 virtual constructors 在许多情况下有要有用,其中之一就是从磁盘读取对象信息。 下面是一个小实例,比如,我在项目的根目录下,新建一个文本文件 a1.txt,文件中的内容是(Derone,Der
2011-06-06 19:49:00 797
原创 More effective c++ 11(禁止异常(exceptions)流出destructors之外)
<br /> 当对象被exception处理机制------也就是exception传播过程中的stack------unwinding(栈展开)机制-----销毁。<br /> 当destructor被调用时,可能有一个exception正在作用之中。可惜的是我们无法在destructor内区分这些状态。于是,必须在保守的假设下(假设当时有个exception正在作用中)撰写你的destructors。因为如果控制权基于exception的因素离开destructor。而此时正有另一个exce
2011-06-01 23:30:00 1183
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人