¿Está bien que no llame al Thread#join
? En este caso, no me importa si el hilo explota, solo quiero que Unicorn siga procesando.¿Está bien que no llame a Thread # join?
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
¿Me sale "zombie threads" o algo por el estilo?
Estoy de acuerdo, unirse es increíblemente sobrevalorado. Es útil al principio cuando le enseñas a la gente sobre los hilos, pero una vez que entiendes cómo funcionan realmente los hilos, te das cuenta de que las uniones realmente limitan tu capacidad para realizar subprocesos de manera efectiva. Un patrón que noto es que las uniones generalmente solo se usan en hilos de corta duración, como hilos de trabajo. Ejemplo: el hilo administrador genera 10 hilos de trabajo, luego los une a todos, reúne sus resultados y lo procesa. – corsiKa
@glowcoder Exactamente, y, a menudo, hay mejores opciones que unirse en esas situaciones, según la plataforma y las bibliotecas que esté utilizando ... –