Synchronization Objects
一個 synchronization object 它的 handle 可以被指派到一個 wait functions 內來協調多個執行緒的執行.
多個處理程序可以共用一個同步物件的 handle 來達成處理程序之間的同步化.
多個處理程序可以共用一個同步物件的 handle 來達成處理程序之間的同步化.
以下為同步物件型別
型別 | 描述 |
---|---|
Event | 通知一個或多個正在等候的執行緒有事件已經被觸發,可以進行下一個動作. 更多資訊請參閱 Event Objects. |
Mutex | 在同一個時間裡只有一個執行緒可以擁有, 讓執行緒之間相互協調在同一時間只有一個執行緒可以存取共用資源. 更多資訊請參閱 Mutex Objects. |
Semaphore | 限制在同一時間可以存取共用資源的執行緒數量. 更多資訊請參閱 Semaphore Objects. |
Waitable timer | 通知一個或多個正在等候的執行緒指定的時間已到達. 更多資訊請參閱 Waitable Timer Objects. |
撰寫多執行緒程式時為什麼要使用這些同步化物件 , 舉例來說
1. 當 多個執行緒同時讀寫一個檔案時若沒使用 同步化物件來安排存取順序時將造成資源衝突
2. 當多個執行緒在等待某一個資料進來時, 若是使用迴圈方式( for 或 while) 不斷的讀取將造成
CPU使用率大幅升高 ,因此可以使用同步化物件把CPU時間讓出給其他執行緒使用,直到某一 個資料進來時觸發事件再進行下一步動作
1. 當 多個執行緒同時讀寫一個檔案時若沒使用 同步化物件來安排存取順序時將造成資源衝突
2. 當多個執行緒在等待某一個資料進來時, 若是使用迴圈方式( for 或 while) 不斷的讀取將造成
CPU使用率大幅升高 ,因此可以使用同步化物件把CPU時間讓出給其他執行緒使用,直到某一 個資料進來時觸發事件再進行下一步動作