gpt4 book ai didi

ruby - 线程阻塞 Ruby 1.9 中的主线程

转载 作者:数据小太阳 更新时间:2023-10-29 08:33:10 26 4
gpt4 key购买 nike

我有这个代码:

.......

    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

请注意,如果最后加入thead,那么当主执行线程完成它的工作时它就会死亡,所以加入是必要的。

关于ruby - 线程阻塞 Ruby 1.9 中的主线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13290029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com