为了避免多个线程同时读写同一个数据而产生不可预料的后果,需要将各个线程对同一个数据的访问同步(synchronization)。所谓同步,是指在一个线程访问数据未结束时候,其它的线程不得对同一个数据进行访问。
同步的机制如下:(1)信号量(Semaphore),包括二元信号量和多元信号量;(2)互斥量(Mutex)(3)读写锁(Read-Write Lock) ;(4)条件变量(Condition Variable);
Win32 API 有四个主要的同步对象:
Event :事件
Semaphore:信号量
Mutex:互斥
Critical Section:临界段
注:WaitForSingleObject/ WaitForMultipleObjects函数可以将调用线程挂起。