J'écris un programme ruby qui utilisera des threads pour travailler. Le travail en cours prend une durée non déterministe et peut durer de 5 à 45 secondes. Ci-dessous un exemple de ce que le rugueux code threading ressemble:Que se passe-t-il lorsque vous ne rejoignez pas vos threads?
loop do # Program loop
items = get_items
threads = []
for item in items
threads << Thread.new(item) do |i|
# do work on i
end
threads.each { |t| t.join } # What happens if this isn't there?
end
end
Ma préférence serait de sauter joindre les fils et ne bloque pas l'application. Cependant, je ne sais pas quelles en sont les implications à long terme, notamment parce que le code est exécuté presque immédiatement. Est-ce quelque chose qui est sûr de faire? Ou y a-t-il une meilleure façon de générer un thread, de le faire fonctionner, et de le nettoyer quand c'est fini, le tout dans une boucle infinie?
Les fils ne ont pas besoin de faire rapport au programme principal. –