Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby – Thread.join阻止主线程大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
调用Thread.join阻止当前(主)线程.但是当主线程退出时,不会在所有产生的线程中调用join结果,以被杀死.一个如何在Ruby中生成持久的子句线程而不阻塞主线程?

这是连接的典型用法.

for i in 1..100 do
  puts "CreaTing thread #{i}"
  t = Thread.new(i) do |j|
    sleep 1
    puts "Thread #{j} done"
  end
  t.join
end
puts "#{Thread.list.sizE} threads"

这给了

     CreaTing thread 1  
     Thread 1 done  
     CreaTing thread 2  
     Thread 2 done  
     ...  
     1 threads  

但我正在寻找如何获得这个

    CreaTing thread 1  
    CreaTing thread 2  
    ...  
    101 threads  
    Thread 1 done  
    Thread 2 done  
    ...  

该代码在Ruby 1.8.7和1.9.2中都提供相同的输出

解决方法

您只需将线程累积到另一个容器中,然后在创建完毕后逐个加入它们: @H_283_4@my_threads = [] for i in 1..100 do puts "CreaTing thread #{i}" my_threads << Thread.new(i) do |j| sleep 1 puts "Thread #{j} done" end end puts "#{Thread.list.sizE} threads" my_threads.each do |t| t.join end

您也不能将线程绑定到i变量,因为我不断被覆盖,并且您的输出将是100行“线程100完成”;相反,你必须将它绑定到我的一个副本,我巧妙地命名为j.

大佬总结

以上是大佬教程为你收集整理的ruby – Thread.join阻止主线程全部内容,希望文章能够帮你解决ruby – Thread.join阻止主线程所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。