天天看點

【Linux系統程式設計】System V信号量

00. 目錄

01. 信号量概述

02. 信号量操作指令

03. 信号量操作函數

3.1 建立信号量數組

3.2 信号量控制函數

3.3 信号量操作函數

04. 程式示例

05. 附錄

信号量廣泛用于程序或線程間的同步和互斥,信号量本質上是一個非負的整數計數器,它被用來控制對公共資源的通路。

程式設計時可根據操作信号量值的結果判斷是否對公共資源具有通路的權限,當信号量值大于 0 時,則可以通路,否則将阻塞。PV 原語是對信号量的操作,一次 P 操作使信号量減1,一次 V 操作使信号量加1。

在實際應用中兩個程序間通信可能會使用多個信号量,是以 System V 的信号量以集合的概念來管理,具體操作和 Posix 信号量大同小異 。

信号量集合資料結構:struct semid_ds,此資料結構中定義了整個信号量集的基本屬性。

信号量資料結構:struct sem,此資料結構中定義了信号量的基本屬性。

檢視信号量數組

删除信号量數組

4.1 建立和删除信号量數組

執行結果:

4.2 擷取信号量數組相關資訊

測試結果:

4.3 擷取和設定信号量數組的值

測試結果:

4.4 信号量數組

4.5 綜合執行個體

執行結果:

繼續閱讀