dop*_*ner 4 ruby multithreading
我是ruby的新手,并试图解决线程问题
假设我有一个方法,我希望每隔x秒运行一次,如下所示
def say_hello
puts 'hello world'
end
Run Code Online (Sandbox Code Playgroud)
我试图按如下方式运行它
Thread.new do
while true do
say_hello
sleep(5)
end
end
Run Code Online (Sandbox Code Playgroud)
但是当我运行脚本时,控制台上没有显示任何内容.我错过了什么?谢谢!
主线程在线程运行之前退出.使用join方法使当前线程等待say_hello线程完成执行(尽管它永远不会).
t = Thread.new do
while true do
say_hello
sleep(5)
end
end
t.join
Run Code Online (Sandbox Code Playgroud)
您正在创建Thread对象,但您不是在等待它完成执行,请尝试:
Thread.new do
while true do
say_hello
sleep(5)
end
end.join
Run Code Online (Sandbox Code Playgroud)