程序間同步的方法

2021-06-07 15:05:50 字數 837 閱讀 1348

2010-05-10 01:03:42

|  分類:

linux|字型大小

訂閱 程序間通訊(ipc)方法主要有以下幾種:   

管道/fifo/共享記憶體/訊息佇列/訊號   

1.管道中還有命名管道和非命名管道(即匿名管道)之分,非命名管道(即匿名管道)只能用於父子程序通訊,命名管道可用於非父子程序,命名管道就是fifo,管道是先進先出的通訊方式    

2.訊息佇列是用於兩個程序之間的通訊,首先在乙個程序中建立乙個訊息佇列,然後再往訊息佇列中寫資料,而另乙個程序則從那個訊息佇列中取資料。需要注意的是,訊息佇列是用建立檔案的方式建立的,如果乙個程序向某個訊息佇列中寫入了資料之後,另乙個程序並沒有取出資料,即使向訊息佇列中寫資料的程序已經結束,儲存在訊息佇列中的資料並沒有消失,也就是說下次再從這個訊息佇列讀資料的時候,就是上次的資料!!!!    

3.訊號量,它與windows下的訊號量是一樣的,所以就不用多說了    

4.共享記憶體,類似於windows下的dll中的共享變數,但linux下的共享記憶體區不需要像dll這樣的東西,只要首先建立乙個共享記憶體區,其它程序按照一定的步驟就能訪問到這個共享記憶體區中的資料,當然可讀可寫      

以上幾種方式的比較:    

1.管道:速度慢,容量有限,只有父子程序能通訊    

2.fifo:任何程序間都能通訊,但速度慢    

4.訊號量:不能傳遞復雜訊息,只能用來同步    

5.共享記憶體區:能夠很容易控制容量,速度快,但要保持同步,比如乙個程序在寫的時候,另乙個程序要注意讀寫的問題,相當於執行緒中的執行緒安全,當然,共享記憶體區同樣可以用作執行緒間通訊,不過沒這個必要,執行緒間本來就已經共享了同一程序內的一塊記憶體

linux程序間的同步方法

程序間通訊 ipc 方法主要有以下幾種 管道 fifo 共享記憶體 訊息佇列 訊號 1.管道中還有命名管道和非命名管道 即匿名管道 之分,非命名管道 即匿名管道 只能用於父子程序通訊,命名管道可用於非父子程序,命名管道就是fifo,管道是先進先出的通訊方式 2.訊息佇列是用於兩個程序之間的通訊,首先...

程序間的同步

為什麼需要程序間同步 通訊 資料傳輸 程序間資料傳輸 資源共享 程序間資源共享 通知事件 程序間相互傳遞訊息 程序控制 有些程序希望完全控制另乙個程序的執行 如debug程序 此時控制程序希望能夠攔截另乙個程序的所有陷入和異常,並能夠及時知道它的狀態改變。程序間的同步原則 空閒讓進 資源無占用,允許...

程序間同步的幾種方法

什麼是臨界區?每個程序中訪問臨界資源的那段程式稱為臨界區 臨界資源是一次僅允許乙個程序使用的共享資源 每次只准許乙個程序進入臨界區,進入後不允許其他程序進入。程序間同步 把非同步環境下的一組併發程序因直接制約而互相傳送訊息而進行互相合作 互相等待,使得各程序按一定的速度執行的過程稱為程序間的同步。實...