lib/transporter/parallelizer.rb in myreplicator-1.0.5 vs lib/transporter/parallelizer.rb in myreplicator-1.0.6

- old
+ new

@@ -32,12 +32,14 @@ reaper = nil while @queue.size > 0 if @threads.size <= @max_threads @threads << Thread.new(@queue.pop) do |proc| + Thread.current[:thread_state] = "running" @klass.new.instance_exec(proc[:params], &proc[:block]) - end + Thread.current[:thread_state] = "done" + end else unless @manager_running reaper = manage_threads @manager_running = true end @@ -61,18 +63,21 @@ def manage_threads Thread.new do while(@threads.size > 0) done = [] @threads.each do |t| - done << t if t.stop? + done << t if t[:thread_state] == "done" || !t.status + # puts t.object_id.to_s + "--" + t.status.to_s + "--" + t.to_s + # raise "Nil Thread State" if t[:thread_state].nil? end done.each{|d| @threads.delete(d)} # Clear dead threads # If no more jobs are left, mark done if done? @done = true else + puts "Sleeping for 2" sleep 2 # Wait for more threads to spawn end end end