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 关注
- 285 浏览
添加回答
举报
0/150
提交
取消