可以不调用Thread#join吗?

时间:2011-10-26 16:32:11

标签: ruby multithreading

可以不拨打Thread#join吗?在这种情况下,我不在乎线程是否爆炸 - 我只是想让Unicorn继续处理。

class MyMiddleware
  def initialize(app)
    @app = app
  end

  def call(env)
    t = Thread.new { sleep 1 }
    t.join # is it ok if I skip this?
    @app.call env
  end
end

我会得到“僵尸线程”或类似的东西吗?

1 个答案:

答案 0 :(得分:8)

完全可以不调用join - 事实上,多线程代码通常根本不需要join。如果您需要阻止,直到新线程完成,您应该只调用join

你不会得到一个“僵尸”线程。新线程将一直运行直到完成,然后为您自行清理。