訊號量的幾點理解

2021-09-25 11:20:14 字數 675 閱讀 2214

訊號量在各種操作系中都作為基本同步或通訊機制,經過一段時間的應用和總結,現歸納如下,有錯誤之處來日再改。

訊號量用於程序/執行緒同步/通訊,大到linux,windows,小到freertos,rt-thread等等都能見到她靚麗的身影。根據用途和常見使用場合細分為以下幾種:

二值訊號量一般用於中斷,在硬體中斷中give訊號量(v操作),在軟中斷(即中斷處理操作)中take訊號量(p操作)。執行take操作後二值訊號量歸零。同理可用於程序/執行緒同步。一方只負責give,另一方只負責take,即take後不需give。

互斥量同樣也是一種二值訊號量,不同的是互斥量一般用於資料訪問保護,當乙個任務想要訪問資料必須先持有(take)該資料的訊號量,當訪問結束後必須歸還(give)持有的訊號量,即take後需give。

上述兩種訊號量一次只能儲存乙個事件,若在鎖存的事件被處理之前還有事件(如中斷)發生,則後來的事件會丟失。計數訊號量可以儲存多個事件,可以避免這種情況。同二值訊號量的操作機制,事件產生者(如中斷)give,事件處理者(如中斷處理程式)take,take後無需give。

資源管理訊號量實際上也是一種計數值的訊號量,不同的是計數訊號量初始化為0,而資源管理訊號量初始化為乙個大於零的值,該值表示可用資源數目,任務想要獲取資源必須先獲取訊號量(使訊號量的計數值減一)。當訊號量值為0的時候表示無可用資源,當任務完成後需歸還訊號量(使訊號量計數值加一)。

訊號量的理解

什麼是semaphore 訊號量 訊號量 semaphore 是在多執行緒環境下使用的一種設施,它負責協調各個執行緒,以保證它們能夠正確 合理的使用公共資源。舉例 我們來看看乙個停車場是怎樣運作的。為了簡單起見,假設停車場只有三個車位,一開始三個車位都是空的。這是如果同時來了五輛車,看門人允許其中三...

通俗理解訊號量

大家都知道,計算機有了作業系統後效能大幅度提公升,其根本原因就在於實現了程序的併發執行。多個併發的程序彼此之間圍繞著緊俏的資源產生了兩種關係,同步或互斥。而訊號量正式解決資源競爭的最有效途徑。比如記錄資源的數量,等待資源的程序數,等待資源的程序阻塞佇列在哪,當然最重要的是訊號量還代表這個資源是互斥的...

訊號量的理解Semaphore

訊號量的概念和鎖很像,不過它是一次給你好幾把鎖,這樣就可以實現同時讓 限定個數的程序來獲取某個資源,看下面的 from multiprocessing import process,semaphore import random import time defktv i,sem sem.acquir...