tft每日頭條

 > 生活

 > 信号量的物理意義是什麼應如何設置其初值

信号量的物理意義是什麼應如何設置其初值

生活 更新时间:2024-07-22 09:12:44

信号量的物理意義是什麼應如何設置其初值?信号量的定義:信号量(Semaphore),有時被稱為信号燈,是在多錢程環境下使用的一種設施,它負責協調各個線程,以保證它們能夠正确、合理的使用公共資源Semaphore分為單值和多值兩種,前者隻能被一個線程獲得,後者可以被若幹個線程獲得,今天小編就來聊一聊關于信号量的物理意義是什麼應如何設置其初值?接下來我們就一起去研究一下吧!

信号量的物理意義是什麼應如何設置其初值(信号量的物理意義)1

信号量的物理意義是什麼應如何設置其初值

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

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

這時,有一輛車離開停車場,看門人得知後,打開車攔,放入外面的一輛進去,如果又離開兩輛,則又可以放入兩輛,如此往複。在這個停車場系統中,車位是共資源,每輛車好比一個線程,看門人起的就是信号量的作用。

抽象的來講,信号量的特性如下:信号量是一個非負整數(車位數),所有通過它的線程/進程(車輛)都會将該整數減一(通過它當然是為了使用資源),當該整數值為零時,所有試圖通過它的線程都将處于等待狀态。

在信号量上我們定義兩種操作: Wait (等待)和Release (釋放)。當一個線程調用Wait操作時,它要麼得到資源然後将信号量減一,要麼一直等下去(指放入阻塞隊列),直到信号量大于等于一時。

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

在進入一個關鍵代碼段之前,線程必須獲取一個信号量;一旦該關鍵代碼段完成了,那麼該線程必須釋放信号量。其它想進入該關鍵代碼段的線程必須等待直到第個線程釋放信号量。為了完成這個過程,需要創建一個信号量VI,然後将Acquire Semaphore VI以及Release SemaphoreV分别放置在每個關鍵代碼段的首未端。确認這些信号量VI引用的是初始創建的信号量。

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved