我正在尝试这个例子:
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
其他时间是其两倍,有时是完整的十倍。
这种矛盾使我感到困惑。为什么Hello World ruby !
只打印一次?我以为当您运行ruby脚本时,它会等到所有线程/进程完成后再终止并返回。
我以为当您运行ruby脚本时,它会等到所有线程/进程都完成后才终止并返回?
不!从文档中Thread
:
如果我们
thr.join
在主线程终止之前不调用,那么所有其他线程thr
都将被杀死。
因此,您需要加入所有这些人:
threads = 10.times.map do
Thread.new do
puts 'Hello, Ruby!'
end
end
threads.each &:join
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句