2023年12月05日
| 分類:開發筆記
| 標籤:c#程式設計
最近一直糾結與使用多程序還是多執行緒來構建程式。多執行緒的方法似乎不錯,但是乙個程序可承受的執行緒數有有限的,並且由於每個執行緒都與ui有著些許關係,執行緒的工作大多數時間浪費在阻塞上了,效率實在不是很高。
筆者遂在google上搜尋程序間通訊的方案。發現有很多種,其中ipc通道似乎是個不錯的選擇,支援本機的程序間通訊,可以作為備選方案之一,下面介紹以下基本的程式設計方法,以作備忘。
首先建立乙個ipc通訊中使用的物件,其中marshalbyrefobject 是必須的 ?
12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using
system;
namespace
ipctest
public
int
add(
int
x)
}
}
接著建乙個服務端控制台程式?
12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using
system;
using
system.runtime.remoting;
using
system.runtime.remoting.channels;
using
system.runtime.remoting.channels.ipc;
namespace
ipctest
}
}
最後是客戶端控制台程式?
12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using
system;
using
system.runtime.remoting;
using
system.runtime.remoting.channels;
using
system.runtime.remoting.channels.ipc;
namespace
ipctest
,"
,st.count(),st.add(1));
console.readline();
}
}
}
在測試的過程中會發現第一次呼叫客戶端輸出結果:
1,2第二次輸出結果
3,4……
結果是比較符合要求的。
程序間的通訊 IPC通道
內部程序通訊,是指在同一臺計算機當中的不同程序之間進行通訊。對於兩個程序之間的通訊方式有很多種,比如檔案共享,socket通訊,管道等,這裡主要講的是通過ipc channel的方式 主要用到的命名空間有以下幾個 using system.runtime.remoting using system....
程序間通訊之 IPC
有三種稱做xsi ipc的ipc 訊息佇列 message queues 訊號量 semaphores 以及共享記憶體 shared memory 每個核心中的ipc結構 訊息佇列,訊號量和共享儲存段 都用乙個非負整數的識別符號來加以引用。要向乙個佇列中傳送訊息或讀取訊息只需要知道其佇列識別符號即可...
c 程序間通訊 IPC
最近在除錯乙個演算法,想通過改變演算法的引數看看結果有什麼變化。碰到乙個麻煩的事情是,從磁碟載入 構建資料需要15分鐘。這就比較討厭了,也就是說我每次調乙個引數前都要等15分鐘啟動時間?於是我就想,能不能開乙個datahost程序專門載入資料。我在別的程序除錯引數,但需要用資料時就直接從dataho...