Ruby EventMachine,杀死正在运行的进程?

时间:2013-08-28 06:55:42

标签: ruby eventmachine

如何在EventMachine中终止正在运行的进程? 下面是一个例子,我正在开始10个进程,然后我试图将它们全部删除(但它不起作用)。我的目标是没有“完成”输出。

require "rubygems"
require "eventmachine"

class Event
  def start
    sleep(5)
    puts Time.now.to_s + ": Finished!"
  end
end

EventMachine.run do
  events = []
  10.times {
    handle = Event.new
    events << handle

    EventMachine.defer(proc {
      handle.start
    })
  }

  # Terminate all events!
  events.each do |handle|
    handle = nil
    ObjectSpace.garbage_collect
  end
end

我知道我可以设置一个变量并检查它是否在输出时设置,但我觉得这不是“真正的”,或者这真的是唯一的解决方案吗?

1 个答案:

答案 0 :(得分:1)

尝试EventMachine.stop_event_loop,它会“导致所有打开的连接和接受服务器关闭并关闭”。