Go的口號之一是“不要通過共享內存進行通信;而是通過通信共享內存。我想知道Go是否允許在同一臺機器上運行的兩個不同的Go編譯二進制文件相互通信(即客戶端-服務器),以及與C ++中的boost :: interprocess相比,速度有多快?到目前為止,我所看到的所有示例僅說明了相同程序例程之間的通信。一個簡單的Go示例(帶有單獨的客戶端和服務器代碼)將不勝感激!
3 回答
FFIVE
TA貢獻1797條經驗 獲得超6個贊
當我讀到這篇文章時,我想到的第一件事就是Stackless Python。在圍棋通道讓我想起很多無堆棧的Python,但是這可能是因為(一)我用它和(b)中的語言/想法,他們實際上都來自我從來沒有碰到。
我從未嘗試將通道用作IPC,但這可能是因為替代方法可能更安全。這是一些偽代碼:
程序1
chan = channel()
ipc = IPCManager(chan, None)
send_to_other_app(ipc.underlying_method)
chan.send("Ahoy!")
程序2
chan = channel()
recv_from_other_app(underlying_method)
ipc = IPCManager(chan, underlying_method)
ahoy = chan.recv()
如果您使用傳統的IPC方法,則可以在每一側都有通道,將其通信包裝在其頂部。這導致了一些實現上的問題,我什至無法考慮如何解決,并且可能會出現一些意外的競爭情況。
但是,我同意。通過具有Go通道相同靈活性的流程進行通信的能力非常出色(但我擔心會不穩定)。
但是,將簡單的插座包裝在兩側各有一個通道即可獲得幾乎所有的好處。
- 3 回答
- 0 關注
- 300 瀏覽
添加回答
舉報
0/150
提交
取消
