同步原語

當一個進程調用一個send原語時,在訊息開始傳送後,傳送進程便處於阻塞狀態,直至訊息完全傳送完畢,send原語的後繼語句才能繼續執行。當一個進程調用一個receive原語時,並不立即返回控制,而是等到把訊息實際接收下來,並把它放入指定的接收區,才返回控制,繼續執行該原語的後繼指令。在這段時間它一直處於阻塞狀態。上述的send和receive被稱為同步通信原語或阻塞通信原語。

事件作為一種同步原語,是計算機科學中的一種同步機制,用來指示等待中的進程特定條件已經變為真。
事件對象一般具有下述操作:
  • wait- 執行中的執行緒被掛起直到事件為真。如果執行wait時事件已為真,則空操作。
  • set- 設定事件狀態為真,所有等待此事件的進程變為可調度。
  • clear- 設定事件狀態為假。
Microsoft Windows作業系統提供的事件核心對象,狀態為signaled對應於狀態為真;使用WaitForObject及相關係統函式實現wait操作,SetEvent系統函式實現set操作,ResetEvent系統函式實現clear操作。在創建事件對象時可以設定為“自動重置事件”或“手動重置事件”。當一個手動重置事件被觸發的時候,正在等待該事件的所有執行緒都將變成可調度狀態;而當一個自動重置事件被觸發的時候,只有一個正在等待該事件的執行緒會變成可調度狀態,該事件對象自動變為未觸發態。
事件類似於管程中的條件變數。

相關詞條

熱門詞條

聯絡我們