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

Наясно съм, че мога да задам променлива и да проверя дали е зададена, когато правя изхода, но чувствам, че това не е „истинското“ нещо или това наистина е единственото решение?


person Benedikt B    schedule 28.08.2013    source източник


Отговори (1)


Опитайте EventMachine.stop_event_loop, това ще „накара всички отворени връзки и приемащи сървъри да спрат и затворен”.

person Patrick Oscity    schedule 28.08.2013
comment
Благодаря за приноса ви, но какво ще стане, ако искам да убия само конкретни процеси, а не всички? - person Benedikt B; 28.08.2013