0
我在Ruby中有一个线程。它运行一个循环。当该循环达到睡眠(n)时,它停止并且不会醒来。如果我用睡眠(n)运行循环,它将作为无限循环运行。Ruby线程在线程中失败
代码中发生了什么以阻止线程按预期运行? 我该如何解决它?
class NewObject
def initialize
@a_local_var = 'somaText'
end
def my_funk(a_word)
t = Thread.new(a_word) do |args|
until false do
puts a_word
puts @a_local_var
sleep 5 #This invokes the Fail
end
end
end
end
if __FILE__ == $0
s = NewObject.new()
s.my_funk('theWord')
d = gets
end
我的平台是Windows XP SP3
我已经安装了红宝石的版本是1.8.6
无法重现,上面的代码每5秒打印一次“theWord”和“somaText”。这是你所期望的吗?您遇到问题的任何特定版本的Ruby? – molf 2009-08-28 15:55:42
我用ruby 1.8.6,1.9.1和jruby 1.3.1运行这段代码,它按预期工作。尝试添加Thread.abort_on_exception = true以查看您的错误是什么。 – ottobar 2009-08-28 15:56:41