程序間通訊ipc 執行緒間通訊

2022-08-17 16:33:17 字數 1148 閱讀 9086

程序間通訊(ipc,inter-process communication)指至少兩個程序或執行緒間傳送資料或訊號的一些技術或方法。

程序是計算機系統分配資源的最小單位(嚴格說來是執行緒)。每個程序都有自己的一部分獨立的系統資源,彼此是隔離的。為了能使不同的程序互相訪問資源並進行協調工作,才有了程序間通訊。(但是採用了某種形式的核心開銷,降低了效能)

程序間通訊技術包括訊息傳遞、同步、共享記憶體和遠端過程呼叫(rpc)。

常用的程序間通訊主要有以下5種:

管道(包括無名管道和命名管道)、訊息佇列、訊號量、共享記憶體、socket。

無名管道,是 unix 系統ipc最古老的形式。基於管道檔案操作。

訊息佇列,是訊息的鏈結表,存放在核心中。

訊號量,與已經介紹過的 ipc 結構不同,它是乙個計數器。訊號量用於實現程序間的互斥與同步,而不是用於儲存程序間通訊資料。

共享記憶體,指兩個或多個程序共享乙個給定的儲存區。是最快的一種 ipc,因為程序是直接對記憶體進行訪問。訊號量+共享記憶體通常結合在一起使用,訊號量用來同步對共享記憶體的訪問。

socket,這個不用多說。

總結:1.管道:速度慢,容量有限,只有父子程序能通訊(fifo:任何程序間都能通訊,但速度慢)

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

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

5.socket:i/o復用提供一種能力,這種能力使得當乙個i/o條件滿足時,程序能夠及時得到這個資訊。適合(遠端過程呼叫、集群)

幾種執行緒間的通訊機制

1、鎖機制

1.1 互斥鎖:提供了以排它方式阻止資料結構被併發修改的方法。

1.2 讀寫鎖:允許多個執行緒同時讀共享資料,而對寫操作互斥。

1.3 條件變數:可以以原子的方式阻塞程序,直到某個特定條件為真為止。對條件測試是在互斥鎖的保護下進行的。條件變數始終與互斥鎖一起使用。

2、訊號量機制:包括無名執行緒訊號量與有名執行緒訊號量

3、訊號機制:類似於程序間的訊號處理。

執行緒間通訊的主要目的是用於執行緒同步,所以執行緒沒有象程序通訊中用於資料交換的通訊機制。

參考:程序間的五種通訊方式介紹

程序間通訊IPC

這兩天學習了 unix 的程序間通訊 ipc,這裡面有幾個很重要的基本概念,特別是訊息佇列和我的畢設很有關係,因此多說幾句。以前學習的程序間通訊方式,一般都是經由 fork 或exec 開啟檔案,或經過檔案系統。而 ipc是程序間通訊方式的統稱。下面一一道來。一 管道 管道是最老的 ipc形式。管道...

程序間通訊 IPC

part2 index1.html part2 index2.html linux至少支援如下ipc機制 同時支援posix和system v方式 streams ipc機制,linux本身不支援,有乙個單獨的安裝包 可以跨pc的程序通訊 互斥鎖或條件變數 動態初始化 不能使靜態分配 在共享記憶體中...

程序間通訊IPC

乙個大型的應用系統,往往需要眾多程序協作,程序間通訊的重要性顯而易見。首先,程序間通訊至少可以通過傳送開啟檔案來實現,不同的程序通過乙個或多個檔案來傳遞資訊,事實上,在很多應用系統裡,都使用了這種方法。但一般說來,程序間通訊 ipc interprocess communication 不包括這種似...