【发布时间】:2011-04-26 15:54:15
【问题描述】:
一年前我在这里发布了完全相同的问题: Ruby Loop Failing in Thread
这里是代码(与上面的主题几乎相同)
class NewObject
def my_funk
t = Thread.new {
until false do
puts sleep 15 # sleeps way too much
end
}
t.join
end
end
if __FILE__ == $0
s = NewObject.new()
s.my_funk
end
这是输出:
15
42
36
38
33
45
42
33
32
40
代码基本上打印了实际的睡眠秒数。 有谁知道这里发生了什么以及如何解决它?
我正在运行 Windows 7 和 Ruby 1.8.7
【问题讨论】:
-
不知道这里发生了什么,但代码在 Windows 7 上使用 JRuby 1.5.3 可以正常工作。
-
它也适用于 Win7 上的 Ruby 1.9。我想我得更新我的红宝石了。
-
你有 puts sleep 15,它应该只是 sleep 15 没有 puts...
-
@Nick,
sleep返回实际的睡眠秒数,因此“puts sleep 15”将尝试睡眠 15 秒,然后显示睡眠了多少秒。
标签: ruby multithreading loops sleep