Ruby 不叫线程加入可以吗?
不调用Ruby 不叫线程加入可以吗?,ruby,multithreading,Ruby,Multithreading,不调用线程#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 我会得到“僵尸线程”或类似的东西吗?不调用joi
线程#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
我会得到“僵尸线程”或类似的东西吗?不调用
join
很好-事实上,多线程代码通常根本不需要join
。只有在新线程完成之前需要阻塞时,才应调用join
你不会得到一个“僵尸”线程。新线程将运行到完成,然后为您清理自己。我同意,join被高估了。当您在早期向人们教授线程时,它很有用,但一旦您了解了线程的实际工作方式,您就会意识到连接实际上限制了您有效地进行多线程处理的能力。我注意到的一种模式是连接通常只在非常短的生命周期线程上使用,比如工作线程。示例:管理器线程生成10个工作线程,然后将它们全部合并,收集其结果并进行处理。@glowcoder确切地说,在这些情况下,通常有比合并更好的选项,具体取决于您使用的平台和库。。。