作業系統設計/臨界區問題/監視器
外觀
< 作業系統設計
許多人更喜歡使用監視器作為訊號量的替代方案。
監視器本質上是一個帶有私有方法和佇列的類。想要進入監視器的程序(即執行*任何*私有方法)必須在佇列中等待。只有當監視器中沒有程序(即沒有人執行任何私有方法)時,才允許程序進入佇列。監視器本身執行單執行緒部分。這保證了在任何時刻只有一個程序可以在監視器內執行。
與訊號量相比,監視器結構良好,因此易於理解和實現。
訊號量的一個常見錯誤是,一個程序獲取訊號量,完成它需要做的事情,但意外地沒有釋放訊號量。這個程序可能在程式設計師注意到其他程序死鎖並永遠等待有人釋放訊號量之前就已經完成了。
監視器使這個問題變得不可能。使用監視器的系統仍然有可能死鎖,但只有當程序在監視器內陷入無限迴圈時才會發生,這比一個很久以前似乎已成功完成的程序更容易除錯。