這些Object的特點如下:
- Event:用來通知一個或多個執行緒已經發生一件事情,詳見http://msdn.microsoft.com/en-us/library/ms682655(VS.85).aspx
- Mutex:每一時間點只能被一個執行緒擁有此物件(Mutex Object),主要是用在多執行緒對共用資源的存取,可以達到執行緒互相唯一(Mutually Exclusive, Mut+Ex=Mutex)的操作方式。詳見http://msdn.microsoft.com/en-us/library/ms684266(VS.85).aspx
- Semaphore:維持記數(count)在0和某一最大數值之間,用來限制同時存取共用資源的執行緒數量。詳見http://msdn.microsoft.com/en-us/library/ms685129(VS.85).aspx
- Waitable Timer:設定一個或多個已經定時的執行緒,當時間到達時則通知這些執行緒。詳見http://msdn.microsoft.com/en-us/library/ms687012(VS.85).aspx
除了這四個物件之外,其他可以用來同步執行緒的物件還有:Change notification、Console input、Job、Memory resource notification、Process、Thread等。
這裡還沒有提到一點,為了讓執行緒可以停下來等同步,我們必須使用Wait Function這個功能,Wait Function會在執行的時候block停止住,直到特定的條件(criteria)符合達成才會繼續執行下去,當然你也可以設定一段時間(time-out interval),當條件不符合時,進入等待的狀態,若時間超過則會繼續執行而不等待。
沒有留言:
張貼留言