线程的执行是异步的,我们无法预期线程的执行次序,正是由于这种不可预期性造成了所谓的竞争条件(race condition)。如果有两个线程同时读写一个全局变量,就有可能产生竞争条件。另一个可能产生的问题就是死锁(dead lock)。死锁就是两个线程相互占有对方需要的资源,而互相等待对方释放资源,结果造成线程不能得到资源而停止运行。为了解决这些问题,必须采用相应的措施协调各个线程的执行次序。Windows提供了四种同步机制,他们分别是临界区,互斥体,信号量和事件。临界区只能在某一个进程的内部实现访问控制。如果需要在不同的进程之间控制数据的访问,那么就需要互斥体或信号量。事件是 Windows的一种内核对象,它通过发信号表示某一操作己经完成。使用事件同步线程的时候,首先要创立一个