Go 的口号之一是不要通过共享内存进行通信;相反,通过通信来共享内存 http://golang.org/doc/effective_go.html#concurrency.
我想知道 Go 是否允许在同一台机器上运行的两个不同的 Go 编译的二进制文件相互通信(即客户端-服务器),以及与 C++ 中的 boost::interprocess 相比,这有多快?到目前为止我看到的所有示例都仅说明了同一程序例程之间的通信。
一个简单的 Go 示例(具有单独的客户端和服务器代码)将不胜感激!
当我读到这篇文章时,我首先想到的就是 Stackless Python。 Go 中的通道让我想起了lotStackless Python,但这可能是因为(a)我使用过它以及(b)他们的语言/思想actually来自我从未接触过的。
我从未尝试过使用通道作为 IPC,但这可能是因为替代方案可能更安全。这是一些伪代码:
program1
chan = channel()
ipc = IPCManager(chan, None)
send_to_other_app(ipc.underlying_method)
chan.send("Ahoy!")
program2
chan = channel()
recv_from_other_app(underlying_method)
ipc = IPCManager(chan, underlying_method)
ahoy = chan.recv()
如果您使用传统的 IPC 方法,则可以在每一侧都有通道,将其通信封装在其之上。这导致了实施中的一些问题,我什至无法考虑如何解决,并且可能会出现一些意想不到的竞争条件。
不过,我同意;使用与 Go 通道相同的灵活性通过进程进行通信的能力将是惊人的(但我担心不稳定)。
然而,将一个简单的插座包裹在每一侧都带有通道可以让您获得几乎所有的好处。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)