線程同步機制為線程協同工作而設計,windows系統中有多種機制可以用于線程同步,最常用的有下面幾種:
- 互斥對象(Mutex)
- 時間對象(Event)
- 信號量(Semaphore)
- 臨界區(critical section)
- 可等待計時器(waitable Timer)
同步過程中兩個重要的概念是同步對象和等待函數:
同步對象:線程同步過程中需要先定義一個同步對象,具有標志的(signaled)和未標志的(nonsignaled),線程根據是否已經完成操作將同步對象視之為 標志的或未標志的。
等待函數:專門用于等待同步對象狀態改變,線程調用等待函數后會暫停,直到同步對象的狀態改變后,等待函數才會返回,線程繼續執行,等待函數 分為“單對象”等待函數和“多對象”等待函數。
常用等待函數:WaitForSingleObject ? WaitForMultipeObject