訊號量的物理意義是什麼應如何設定其初值 訊號量的物理意義

來源:時尚少女範 1.4W
訊號量的物理意義是什麼應如何設定其初值 訊號量的物理意義

1、訊號量的定義:訊號量(Semaphore),有時被稱為訊號燈,是在多錢程環境下使用的一種設施,它負責協調各個執行緒,以保證它們能夠正確、合理的使用公共資源Semaphore分為單值和多值兩種,前者只能被一個執行緒獲得,後者可以被若干個執行緒獲得。

2、以一個停車場的運作為例。簡單起見,假設停車場只有三個車位,一開始三個車位都是空的。這時如果同時來了五輛車,看門人允許其中三輛直接進入,然後放車攔,剩下的車則必須在入口等待,此後來的車也都不得不在入口處等待。

3、這時,有一輛車離開停車場,看門人得知後,開啟車攔,放入外面的一輛進去,如果又離開兩輛,則又可以放入兩輛,如此往復。在這個停車場系統中,車位是共資源,每輛車好比一個執行緒,看門人起的就是訊號量的作用。

4、抽象的來講,訊號量的特性如下:訊號量是一個非負整數(車位數),所有通過它的執行緒/程序(車輛)都會將該整數減一(通過它當然是為了使用資源),當該整數值為零時,所有試圖通過它的執行緒都將處於等待狀態。

5、在訊號量上我們定義兩種操作: Wait (等待)和Release (釋放)。當一個執行緒呼叫Wait操作時,它要麼得到資源然後將訊號量減一,要麼一直等下去(指放入阻塞佇列),直到訊號量大於等於一時。

6、Release(釋放)實際上是在訊號量上執行加操作,對應於車輛離開停車場,該操作之所以叫做“釋放”是因為釋放了由訊號量守護的資源。

7、在進入一個關鍵程式碼段之前,執行緒必須獲取一個訊號量;一旦該關鍵程式碼段完成了,那麼該執行緒必須釋放訊號量。其它想進入該關鍵程式碼段的執行緒必須等待直到第個執行緒釋放訊號量。為了完成這個過程,需要建立一個訊號量VI,然後將Acquire Semaphore VI以及Release SemaphoreV分別放置在每個關鍵程式碼段的首未端。確認這些訊號量VI引用的是初始建立的訊號量。

熱門標籤