我有这个代码:
…………
ping_thread = Thread.new {
loop do
sleep 2
ping
end
}
ping_thread.join
puts "TEST"
…………
它执行 ping 功能,但不会继续打印“TEST”语句。ping 函数里面有一个简单的“puts "PING"”语句。我希望 ping_thread 作为后台线程运行。
我有这个代码:
…………
ping_thread = Thread.new {
loop do
sleep 2
ping
end
}
ping_thread.join
puts "TEST"
…………
它执行 ping 功能,但不会继续打印“TEST”语句。ping 函数里面有一个简单的“puts "PING"”语句。我希望 ping_thread 作为后台线程运行。
Thread.new
将自动启动您的线程在后台运行,Thread#join
并将阻塞直到该线程完成其工作。所以通常,当主执行线程完成工作时,加入线程是你做的最后一件事。
尝试以下代码,看看它是否符合您的要求:
ping_thread = Thread.new {
loop do
sleep 2
puts "ping"
end
}
puts "TEST"
ping_thread.join
注意,如果最后没有jointhead,它会在主执行线程完成工作时死掉,所以join是必须的。
.join
方法just wait here until thread is dead