Je fais ce que beaucoup de gens ont probablement besoin de faire, le traitement des tâches qui ont un temps d'exécution variable. J'ai la preuve de code suivante concept:Traiter n éléments à la fois (en utilisant des threads)
threads = []
(1...10000).each do |n|
threads << Thread.new do
run_for = rand(10)
puts "Starting thread #{n}(#{run_for})"
time=Time.new
while 1 do
if Time.new - time >= run_for then
break
else
sleep 1
end
end
puts "Ending thread #{n}(#{run_for})"
end
finished_threads = []
while threads.size >= 10 do
threads.each do |t|
finished_threads << t unless t.alive?
end
finished_threads.each do |t|
threads.delete(t)
end
end
end
Il ne démarre pas un nouveau fil jusqu'à ce que l'un des fils précédents a déposés. Est-ce que quelqu'un sait une manière meilleure, plus élégante de faire ceci?
Exactement ce que je cherchais. Merci –