我正在尝试使用Ruby 1.8.6的示例。 问题是该示例是为Ruby 1.8.5编写的。
我的假设是问题在于线程被调用或未被调用的方式。 这是样本:
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兼容
由于
答案 0 :(得分:3)
您的问题可能是主线程的执行早于3秒超时通过,尝试将sleep(3.2)放在代码的末尾。如果不是这样,请描述您想要实现的目标以及尝试这样做时会发生什么