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