Module: ObjectPool::InstanceMethods
- Defined in:
- lib/objectpool.rb
Instance Method Summary collapse
- #busy? ⇒ Boolean
- #close ⇒ Object
- #initialize(*args, &block) ⇒ Object
- #join ⇒ Object
- #size ⇒ Object
- #wait ⇒ Object
Instance Method Details
#busy? ⇒ Boolean
51 52 53 |
# File 'lib/objectpool.rb', line 51 def busy? @__op__mx.synchronize { @__op__queue.size < @__op__workers.list.size } end |
#close ⇒ Object
55 56 57 58 |
# File 'lib/objectpool.rb', line 55 def close @__op__workers.list.each {|worker| worker.raise(StopWorker)} @__op__workers = ThreadGroup.new end |
#initialize(*args, &block) ⇒ Object
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/objectpool.rb', line 28 def initialize(*args, &block) @__op__mx = Mutex.new @__op__cv = ConditionVariable.new @__op__queue = Queue.new @__op__workers = ThreadGroup.new self.class.pool_size.times do __op__create_worker(*args, &block) end end |
#join ⇒ Object
39 40 41 |
# File 'lib/objectpool.rb', line 39 def join sleep 0.01 until @__op__workers.list.all? {|w| !w.alive?} end |
#size ⇒ Object
47 48 49 |
# File 'lib/objectpool.rb', line 47 def size @__op__workers.list.size end |
#wait ⇒ Object
43 44 45 |
# File 'lib/objectpool.rb', line 43 def wait sleep 0.01 until @__op__mx.synchronize { @__op__queue.empty? && @__op__workers.list.all? {|w| !w.busy?} } end |