diff options
author | Eric Wong <normalperson@yhbt.net> | 2011-12-08 17:59:26 -0800 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2011-12-08 18:06:29 -0800 |
commit | 00d7a3cca62b19c34df66b337582a7c15c4b4848 (patch) | |
tree | b96a52107458fd065c41fa5e789f77f6017da0e4 /lib/mogilefs/pool.rb | |
parent | 3e80aa8b62dd1b9e1d78e4c1c487f1ea5ee162cd (diff) | |
download | mogilefs-client-00d7a3cca62b19c34df66b337582a7c15c4b4848.tar.gz |
Now that pools can be arbitrarily large, using an O(n) check for object validity can be expensive.
Diffstat (limited to 'lib/mogilefs/pool.rb')
-rw-r--r-- | lib/mogilefs/pool.rb | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/lib/mogilefs/pool.rb b/lib/mogilefs/pool.rb index 1c220fd..21503ba 100644 --- a/lib/mogilefs/pool.rb +++ b/lib/mogilefs/pool.rb @@ -17,19 +17,16 @@ class MogileFS::Pool @args = args @klass = klass @queue = Queue.new - @objects = [] + @objects = {} @purge_threshold = 5 @purge_keep = 2 end def get - begin - object = @queue.pop true - rescue ThreadError - object = @klass.new(*@args) - @objects << object - end - object + @queue.pop true + rescue ThreadError + object = @klass.new(*@args) + @objects[object] = object end def put(o) |