文章插圖
1、信號量的定義:信號量(Semaphore),有時被稱為信號燈 , 是在多錢程環境下使用的一種設施,它負責協調各個線程,以保證它們能夠正確、合理的使用公共資源Semaphore分為單值和多值兩種,前者只能被一個線程獲得,后者可以被若干個線程獲得 。
2、以一個停車場的運作為例 。簡單起見 , 假設停車場只有三個車位,一開始三個車位都是空的 。這時如果同時來了五輛車,看門人允許其中三輛直接進入,然后放車攔,剩下的車則必須在入口等待,此后來的車也都不得不在入口處等待 。
【信號量的物理意義是什么應如何設置其初值】3、這時,有一輛車離開停車場,看門人得知后,打開車攔,放入外面的一輛進去 , 如果又離開兩輛 , 則又可以放入兩輛,如此往復 。在這個停車場系統中,車位是共資源,每輛車好比一個線程,看門人起的就是信號量的作用 。
4、抽象的來講,信號量的特性如下:信號量是一個非負整數(車位數),所有通過它的線程/進程(車輛)都會將該整數減一(通過它當然是為了使用資源),當該整數值為零時,所有試圖通過它的線程都將處于等待狀態 。
5、在信號量上我們定義兩種操作: Wait (等待)和Release (釋放) 。當一個線程調用Wait操作時,它要么得到資源然后將信號量減一,要么一直等下去(指放入阻塞隊列),直到信號量大于等于一時 。
6、Release(釋放)實際上是在信號量上執行加操作,對應于車輛離開停車?。?該操作之所以叫做“釋放”是因為釋放了由信號量守護的資源 。
7、在進入一個關鍵代碼段之前,線程必須獲取一個信號量;一旦該關鍵代碼段完成了,那么該線程必須釋放信號量 。其它想進入該關鍵代碼段的線程必須等待直到第個線程釋放信號量 。為了完成這個過程,需要創建一個信號量VI,然后將Acquire Semaphore VI以及Release SemaphoreV分別放置在每個關鍵代碼段的首未端 。確認這些信號量VI引用的是初始創建的信號量 。
- 堅定信心的詩句
- 液壓方向助力的原理
- 劉備是什么時候當皇帝的
- 怎樣安裝電熱水器
- 十五夜望月通過聽覺察覺到的景物是
- 圓的面積怎么求
- 五因素或致暈車藥失效:劑量過大致不良反應
- 屬豬女和屬馬男的婚姻配嗎
- 絕對不等式的解法過程
- 高粱面發糕的做法有哪些
