信號量

信號量的基本概念:

    信號量的本質是一種數據操作鎖,它本身不具有數據交互的能力,而是通過控制其它的通信資源來實現進程間通信,它本身只是一種外部資源的標識。信號量在此過程中負責數據操作的同步與互斥等功能。

    互斥:對臨界資源的獨佔。

    臨界資源:多個進程能夠訪問共用的資源。

    臨界區:訪問臨界資源的一段代碼。

    同步:帶有順序性的訪問,大多數的同步是建立在互斥的基礎上的。

    原子性:只有一種狀態或者只有一條彙編代碼。

    信號量實際上就是計數器。

信號量的工作原理:

    由於信號量只能進行兩種操作等待和發送信號,即P(sv)和V(sv),他們的行爲是這樣的:

    P(sv):如果sv的值大於零,就給他減一;如果它的值爲零,就掛起該進程;

    V(sv):如果有進程因等待sv被掛起,就讓它恢復運行,如果沒有進程因等待它而掛起就給他加1.

信號量的意圖:

    信號量的意圖在於進程間同步,互斥鎖和條件變量的意圖則在於線程間的同步。但是信號量也可以用於線程間,互斥鎖和條件變量也可以用於進程間。應根據原語決定使用哪種機制。


comm.h

wKiom1eHBHXTO3rGAAEn1rMU2OI502.png-wh_50

comm.c

wKiom1eHBJHQcZiQAAEhyqpoU4Y158.png-wh_50

wKioL1eHBJGDqMl3AAEL4FuS-o0951.png-wh_50

wKioL1eHBKzDBU-UAABUMBAjnqA999.png-wh_50

test.c

wKioL1eHBOHjwt71AAEBm5xU104640.png-wh_50

wKiom1eHBOGgQEnRAACfnR1vvuo990.png-wh_50


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章