我尝试这个例子:
10.times do
Thread.new do
greeting_message = "Hello World ruby !"
puts "#{greeting_message}
end
end
我尝试多次运行,有时候puts
运行一次:
Hello World ruby ! ruby basic_threadding_ruby.rb 0.05s user 0.04s system 97% cpu 0.096 total
其他时间两次,有时甚至完整10次。
这种不一致让我感到困惑。有Hello World ruby !
只打印一次的原因吗?我想当你运行一个ruby脚本时,它会等到所有线程/进程完成后再终止并返回。
答案 0 :(得分:2)
我想当你运行一个ruby脚本时,它会等到所有线程/进程完成后再终止并返回?
都能跟得上!来自the documentation for Thread
:
如果我们在主线程终止之前没有调用
thr.join
,那么包括thr
在内的所有其他线程都将被终止。
所以你需要加入所有这些:
threads = 10.times.map do
Thread.new do
puts 'Hello, Ruby!'
end
end
threads.each &:join