5

我是 ruby​​ 新手,正在尝试解决线程问题

假设我有一个方法,我想每隔x 秒运行一次,如下所示

def say_hello
    puts 'hello world'
end

我正在尝试按如下方式运行它

Thread.new do
    while true do
        say_hello
        sleep(5)
    end
end

但是当我运行脚本时,控制台上没有显示任何内容。我错过了什么?谢谢!

4

3 回答 3

7

主线程在您的线程可以运行之前退出。使用 join 方法使当前线程等待say_hello线程完成执行(尽管它永远不会)。

t = Thread.new do
    while true do
        say_hello
        sleep(5)
    end
end

t.join
于 2013-10-21T15:18:28.453 回答
5

您正在创建 Thread 对象,但您没有等待它完成执行,请尝试:

Thread.new do
    while true do
        say_hello
        sleep(5)
    end
end.join
于 2013-10-21T15:16:27.463 回答
0

尝试

t1 = Thread.new do
    while true do
        say_hello
        sleep(5)
    end
end

t1.join
于 2013-10-21T15:14:44.560 回答