信號量的基本概念:
信號量的本質是一種數據操作鎖,它本身不具有數據交互的能力,而是通過控制其它的通信資源來實現進程間通信,它本身只是一種外部資源的標識。信號量在此過程中負責數據操作的同步與互斥等功能。
互斥:對臨界資源的獨佔。
臨界資源:多個進程能夠訪問共用的資源。
臨界區:訪問臨界資源的一段代碼。
同步:帶有順序性的訪問,大多數的同步是建立在互斥的基礎上的。
原子性:只有一種狀態或者只有一條彙編代碼。
信號量實際上就是計數器。
信號量的工作原理:
由於信號量只能進行兩種操作等待和發送信號,即P(sv)和V(sv),他們的行爲是這樣的:
P(sv):如果sv的值大於零,就給他減一;如果它的值爲零,就掛起該進程;
V(sv):如果有進程因等待sv被掛起,就讓它恢復運行,如果沒有進程因等待它而掛起就給他加1.
信號量的意圖:
信號量的意圖在於進程間同步,互斥鎖和條件變量的意圖則在於線程間的同步。但是信號量也可以用於線程間,互斥鎖和條件變量也可以用於進程間。應根據原語決定使用哪種機制。
comm.h
comm.c
test.c