红宝石线程输出

用户名

我正在尝试这个例子:

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脚本时,它会等到所有线程/进程完成后再终止并返回。

Ry-

我以为当您运行ruby脚本时,它会等到所有线程/进程都完成后才终止并返回?

不!文档中Thread

如果我们thr.join在主线程终止之前不调用,那么所有其他线程thr都将被杀死。

因此,您需要加入所有这些人:

threads = 10.times.map do
  Thread.new do
    puts 'Hello, Ruby!'
  end
end

threads.each &:join

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章