去Ruby中的频道

Jul*_*ert 6 ruby ipc go channels

在Go编程语言中,您可以使用名为"Channels"的构造发送Messages. 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
Run Code Online (Sandbox Code Playgroud)

是否有任何Ruby的构造,库或等效工具?

如果不是:构建这种抽象的最佳方法是什么?

更新:澄清我需要从这些渠道.

一个用例:一些分叉的工人在等待工作.它们都从同一个JobChannel读取并将结果报告给同一个ResultChannel.

我需要的频道

  • 很快,
  • 写入不阻止,(消息发送)
  • 读取阻止,(消息接收)
  • 分叉前不需要特殊处理,
  • 轻巧简单会很好.

到目前为止,我一直在玩

  • DRb,(轻量级+慢速+对我的小脑子太多的魔力)
  • 套接字,(UNIXSocket,TCPSocket ......套接字似乎有很多种方法可以使用它们.我在UNIXSockets上有一个半工作的通道.如果你认为套接字有意义,我应该看一下哪些功能子集?)
  • 管道.(连接2个以上的进程似乎并不重要)

如果其中任何一个已经是我的问题的完美技术,请提供教程等,其中有更多关注我的要求的信息.

pej*_*uko 0

查看这个问题: shared-variable-among-ruby-processes

并查看drb

希望它能有所帮助。