当它处于循环中时,你如何突破线程?

时间:2013-08-06 04:22:01

标签: ruby

我在irb中运行以下命令,但它在完成后不会中断/退出:

count = 0

Thread.new do
  while count < 20 do
    puts 'Hai'
    count += 1
  end
  Thread.kill
end

它只是挂在控制台中。有没有办法完全退出线程?根据我的研究,Thread应该在它退出块之后结束,但我在网上找不到任何关于这个的信息。谢谢!

1 个答案:

答案 0 :(得分:0)

这是一个小例子,愿它能帮到你。

begin
  t = Thread.new do
    loop do
      @bar.increment!
      STDERR.flush
      sleep 1
    end
  end
  yield
  STDERR.puts ' done!' unless $?.exitstatus > 0
rescue => e
  STDOUT.puts "Error:"
  STDOUT.puts e.message
ensure
  t.kill
end