Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def self.scavenger
- if @scavenger.nil? || !@scavenger.alive?
- @scavenger = Thread.new do
- running = true
- while running do
- puts "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
- # Sleep before we actually start doing anything.
- # Otherwise we might clean up something we just made
- sleep(scavenger_interval)
- puts "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
- lock.synchronize do
- pools.each do |pool|
- puts "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
- # This is a useful check, but non-essential, and right now it breaks lots of stuff.
- # if pool.expired?
- pool.lock.synchronize do
- puts "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"
- if pool.expired?
- puts "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE"
- v = pool.dispose
- puts "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
- v
- end
- end
- # end
- end
- # The pool is empty, we stop the scavenger
- # It wil be restarted if new resources are added again
- if pools.empty?
- puts "GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG"
- running = false
- puts "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH"
- running
- end
- end
- puts "Extlib::Pooling.scavenger: loop"
- end # loop
- end
- end
Add Comment
Please, Sign In to add comment