為了擺脫浪費喚醒信號的問題,Dijkstra提出了一種包含存儲所有喚醒調用的方法。 迪克斯特拉(Dijkstra)表示,生產者可以將喚醒調用存儲在一個變數中,而不是將喚醒調用直接發送給消費者。 任何消費者只要需要就可以讀取。
信號量是存儲從生產者轉移到消費者的整個喚醒調用變數。 它是在內核模式下自動進行讀取,修改和更新的變數。
信號量不能在用戶模式下實現,因為在兩個或更多進程試圖同時訪問變數時總會出現競爭條件。 它始終需要操作系統的支持才能實施。
根據情況的需求,信號量可以分為兩類。
- 計算信號量
- 二進位信號量或互斥量
在接下的教學文章中,我們將詳細討論它們。