EventMachine.add_timer(0)

时间:2013-04-02 21:01:09

标签: ruby eventmachine reactor

我遇到了一个代码,它添加了一个超时0的计时器:

EventMachine.add_timer(0) {
  ...
}

这有意义吗?这有用吗?这有什么不同于使用next_tick

EventMachine.next_tick {
  ...
}

1 个答案:

答案 0 :(得分:2)

因为我自己很好看,所以我快速查看了Eventmachine的源代码:

http://eventmachine.rubyforge.org/EventMachine.html#run-class_method

我在事件循环中找到了这个:

...
if @next_tick_queue && !@next_tick_queue.empty?
  add_timer(0) { signal_loopbreak }
end
...

这几乎意味着当你在内部定义next_tick时,它将使用add_timer(0){..}。

唯一的区别可能是执行顺序,我不知道此时排队的计时器的执行方式。