信號量

信號量 （ semaphore ） 又稱爲 - { zh - cn: 信號標; zh - tw: 旗號; zh - hk: 訊號標; } - ， 是一個同步對象 ， 用於保持在0至指定最大值之間的一個計數值 。 當線程完成一次對該semaphore對象的等待 （ wait ） 時 ， 該計數值減一 ； 當線程完成一次對semaphore對象的釋放 （ release ） 時 ， 計數值加一 。 當計數值爲0 ， 則線程等待該semaphore對象不再能成功直至該semaphore對象變成signaled狀態 。 semaphore對象的計數值大於0 ， 爲signaled狀態 ； 計數值等於0 ， 爲nonsignaled狀態 。 信號量的概念是由荷蘭計算機科學家艾茲赫爾 · 戴克斯特拉 （ Edsger W. Dijkstra ） 發明的 ， 廣泛的應用於不同的操作系統中 。 在系統中 ， 給予每一個行程一個信號量 ， 代表每個行程目前的狀態 ， 未得到控制權的行程會在特定地方被強迫停下來 ， 等待可以繼續進行的訊號到來 。 如果信號量是一個任意的整數 ， 通常被稱爲計數訊號量 （ Counting semaphore ） ， 或一般訊號量 （ general semaphore ） ； 如果信號量只有二進位的0或1 ， 稱爲二進位訊號量 （ binary semaphore ） 。