我有一种情况,我想在Ruby中运行多个EventMachines - 有没有人有这方面的经验? (如果没有,我可以自己写一个测试用例。请继续关注。)
让我们明确一点:我想自己实例化两个线程,并在两个线程中调用EventMachine.run
,所以我真的有两个反应器循环。
原因是我正在使用AMQP gem编写异步消息总线,它使用EventMachine。这没关系,但我想把它作为一个单独的模块化组件,可以在两个应用程序中使用:
有人有想法吗?
答案 0 :(得分:7)
好的,深入了解EM的文档,我看到EventMachine.run的正文从这开始:
240: if reactor_running?
241: (b = blk || block) and b.call # next_tick(b)
242: else
... start the reactor ...
这太棒了。看起来,如果你在多个线程中执行EventMachine.run,它将调度第二台机器的定义 - 传递给“run”的块 - 在已经运行的reactor上。
我喜欢这个图书馆。
答案 1 :(得分:3)
你自己回答了,但我想加上我的2美分而没有可怕的评论样式。
# this will start the eventmachine reactor
EM::run do
# do something
# this will do nothing and the block passed to it will
# just be executed directly
EM::run do
# do something else
end
end