class Corleone::Pool

Public Class Methods

new(&block) click to toggle source
# File lib/corleone/pool.rb, line 3
def initialize(&block)
  @initializer = block
  @pool = []
  @m = Mutex.new
end

Public Instance Methods

get() click to toggle source
# File lib/corleone/pool.rb, line 9
def get
  @m.lock
  return @pool.pop if @pool.length > 0
  @initializer.call
ensure
  @m.unlock
end
return(value) click to toggle source
# File lib/corleone/pool.rb, line 17
def return(value)
  @m.lock
  @pool << value
ensure
  @m.unlock
end