2009-09-25 46 views
0

我想要得到一個樣本來使用Ruby 1.8.6。 問題是樣本是爲Ruby 1.8.5編寫的。從Ruby 1.8.5移植到1.8.6 |線程問題

我的假設是問題在於線程被調用或未調用的方式。 這是樣板:

class Timer 
    def initialize(resolution) 
    @resolution = resolution 
    @queue = [] 

    Thread.new do 
     while true 
     dispatch 
     sleep(@resolution) 
     end 
    end 
    end 

    def at(time, &block) 
    time = time.to_f if time.kind_of?(Time) 
    @queue.push [time, block] 
    end 

    private 
    def dispatch 
    now = Time.now.to_f 
    ready, @queue = @queue.partition{|time, proc| time <= now } 
    ready.each {|time, proc| proc.call(time) } 
    end 
end 


timer = Timer.new(0.01) 
timer.at(Time.now + 3) { puts "Hello" } 

我不能讓它與1.8.6的工作,所以我希望有人能告訴我如何使1.8.6

感謝

回答

3

它兼容您的問題可能是主線程的執行早於3秒結束,嘗試將睡眠(3.2)置於代碼末尾。如果不是這種情況,請描述你想達到的目標以及當你嘗試這樣做時會發生什麼

+0

你說得對。我怎麼能監督這一點。謝謝。 – daddz 2009-09-25 13:39:04