在Go编程语言中,您可以使用称为“通道”的结构来发送消息。 http://golang.org/doc/effective_go.html#channels
我很想在Ruby中使用类似的东西,尤其是对于IPC。
我想要的伪代码:
channel = Channel.new
fork do
3.times{ channel.send("foo ") }
exit!
end
Thread.new do
3.times{ channel.send("bar ") }
end
loop do
print channel.recv
end
# ~> bar foo foo bar bar foo
是否有任何可以像Ruby这样工作的构造,库或等效项?
如果不是:构建这种抽象的最佳方法是什么?
更新:为了阐明我从这些渠道中需要什么。
一个用例:一些分叉的工人正在等待工作。它们都从相同的JobChannel读取,并将结果报告给相同的ResultChannel。
我需要的频道
很快
写入不阻塞,(消息发送)
读取执行阻止,(消息接收)
分叉之前不需要特殊处理,
轻巧和简单会很好。
到目前为止,我玩过
DRb,(与轻量级+缓慢+我的小脑袋有太多魔力相对)
套接字,(UNIXSocket,TCPSocket ...套接字似乎有许多使用它们的方式。我在UNIXSockets上获得了半工作的通道。如果您认为套接字有意义,那么我应该看一下哪些功能子集?)
管道。(连接两个以上的进程似乎并非易事)
如果其中任何一项已经是解决我的问题的理想技术,请提供教程等,其中包含有关我的要求的更多重点信息。
精慕HU
相关分类