信號量通訊機制

信號量通訊機制主要用來實現進程的同步,防止進程併發的訪問共享資源。當同步訪問一個資源時,能夠設置一個信號量,其初始值設可用資源的數目。每當進程想要獲取資源時,都要檢測相關的信號量。信號量大於0代表資源可用,當獲取對資源的訪問權限時,將信號量減一。爲保證程序運行的正確性,對信號量的檢測和減操做都必須是原子性的。若是檢測到信號量值爲0,則代表資源不可用看,請求進程必須等待;當一個進程結束時,對與該進程對應的信號量加一,代表此進程歸還對此資源的使用。最簡單的信號量爲二元信號量,例如對打印機的佔用,任何一個時刻只有一個進程打印文檔,信號量爲1表明打印機可用,爲0表明不可用。數組

咱們一般所說的建立一個信號量實際上建立了一個信號量集合,在這個信號量集合中可能會有多個信號量,表示的數據結構爲:數據結構

信號量數據集合struct semid_ds : 在此數據結構中定義了整個信號量集合的基本屬性,如訪問的權限。併發

信號量struct sem{ int semval ; int sempid; } :在信號量集合中使用一個指針,指向一個由信號量組成的數組。指針

相關文章
相關標籤/搜索