我是ruby的新手,并尝试解决线程
假设我有一个方法,我希望每隔 x秒运行
def say_hello
puts 'hello world'
end
我正在尝试运行它如下
Thread.new do
while true do
say_hello
sleep(5)
end
end
但是当我运行脚本时,控制台上没有显示任何内容。我错过了什么?谢谢!
答案 0 :(得分:6)
主线程在线程运行之前退出。使用join方法使当前线程等待say_hello
线程完成执行(尽管它永远不会)。
t = Thread.new do
while true do
say_hello
sleep(5)
end
end
t.join
答案 1 :(得分:5)
您正在创建Thread对象,但您不是在等待它完成执行,请尝试:
Thread.new do
while true do
say_hello
sleep(5)
end
end.join
答案 2 :(得分:0)
尝试
t1 = Thread.new do
while true do
say_hello
sleep(5)
end
end
t1.join