85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
# File 'lib/extlib/pooling.rb', line 85
def self.included(target)
target.class_eval do
class << self
alias __new new
end
@__pools = {}
@__pool_lock = Mutex.new
@__pool_wait = ConditionVariable.new
def self.__pool_lock
@__pool_lock
end
def self.__pool_wait
@__pool_wait
end
def self.new(*args)
(@__pools[args] ||= __pool_lock.synchronize { Pool.new(self.pool_size, self, args) }).new
end
def self.__pools
@__pools
end
def self.pool_size
8
end
end
end
|