ruby - 开始一个线程

时间:2013-10-21 15:10:58

标签: ruby multithreading

我是ruby的新手,并尝试解决线程

假设我有一个方法,我希望每隔 x秒运行

def say_hello
    puts 'hello world'
end

我正在尝试运行它如下

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

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

3 个答案:

答案 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