訊號量的相關知識

2021-07-24 02:42:07 字數 1077 閱讀 7921

概念

訊號量(又名:訊號燈)與其他程序間通訊方式不大相同,主要用途是保護臨界資源. 

分類: 

二值訊號燈:訊號燈的值只能取0或1 

計數訊號燈:訊號燈的值可以取任意非負值 

使用訊號燈

1.開啟或建立訊號燈 

2訊號燈值操作 

3.獲得或設定訊號燈屬性 

訊號api

1.semget

函式作用:建立訊號量 

函式原型:int semget(key_t key, int nsems, int sem***) 

引數:nsems:訊號量的數目,通常取1 

sem***:用法同open 

返回值:成功返回訊號量識別符號 

出錯-1 

2.semctl

函式作用:訊號量的控制,初始化,刪除等 

函式原型:int semctl(int semid, int semnum, int cmd,union semun arg) 

引數:cmd:

ipc_stst:獲得semid_ds結構 

ipc_setval:設arg的val的值為訊號量值 

ipc_getval:返回訊號量的當前值 

ipc_rmid:刪除訊號量

semum:通常為0,第乙個訊號量 

arg:union semun 

返回值:cmd不同,返回值不同。 

ipc_stat,ipc_setval,ipc_rmid:返回0 

ipc_getval:返回訊號量的當前值 

出錯:-1

3.semop

函式作用:執行pv操作 

函式原型:int semop(int semid, struct sembuf *sops, size_t nsops) 

引數:semid:semget()的返回值(訊號量識別符號) 

sops:

struct sembuf

nsops:運算元組sops中的運算元

返回值:成功返回訊號量識別符號 

出錯-1

訊號量處理相關函式

訊號量處理函式 semget 使用格式 include int semget key t key int nsems,int sem 功能 建立乙個新的訊號量或獲取乙個已經存在的訊號量的鍵值。返回值 成功返回訊號量的標識碼id。失敗返回 1 引數 key 為整型值,使用者可以自己設定。有兩種情況 1...

訊號量 二值訊號量

訊號量 二值訊號量 訊號量是作業系統的重要部分,訊號量一般用來進行資源管理和任務同步。freertos中訊號量分為二值訊號量 互斥訊號量 計數訊號量和遞迴互斥訊號量,應用場景各不同。二值訊號量通常用於互斥訪問或同步,二值訊號量和互斥訊號量非常相似,但互斥訊號量有優先順序,二值訊號量沒有。因此二值訊號...

python訊號量 Python訊號量

python訊號量教程 訊號量是由作業系統管理的一種抽象資料型別,用於在多執行緒中同步對共享資源的使用。本質上說,訊號量是乙個內部資料,用於標明當前的共享資源可以有多少併發讀取。也可以簡單的理解為,訊號量是多把鎖,同時允許多個執行緒來更改資料,而 python訊號量與互斥鎖的關係 訊號量的乙個特殊用...