diff options
author | Andre Arko <andre@arko.net> | 2015-08-23 16:32:31 -0700 |
---|---|---|
committer | Samuel Giddins <segiddins@segiddins.me> | 2016-01-25 10:45:41 -0600 |
commit | 86418dbc983688281647b39d36739de73c245501 (patch) | |
tree | e41ada311cc8839e6de397385505f4c238c61990 /lib/bundler/vendor | |
parent | 35a2a97ad0c6ca92c593c89d294661c5a20d3226 (diff) | |
download | bundler-86418dbc983688281647b39d36739de73c245501.tar.gz |
ever so slightly more responsible thread usage
Diffstat (limited to 'lib/bundler/vendor')
-rw-r--r-- | lib/bundler/vendor/compact_index_client/lib/compact_index_client.rb | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/bundler/vendor/compact_index_client/lib/compact_index_client.rb b/lib/bundler/vendor/compact_index_client/lib/compact_index_client.rb index 52500c0657..6f8ec72a70 100644 --- a/lib/bundler/vendor/compact_index_client/lib/compact_index_client.rb +++ b/lib/bundler/vendor/compact_index_client/lib/compact_index_client.rb @@ -1,5 +1,5 @@ require "pathname" -require "set" +require "bundler/worker" class Bundler::CompactIndexClient require "bundler/vendor/compact_index_client/lib/compact_index_client/cache" @@ -27,9 +27,13 @@ class Bundler::CompactIndexClient versions end - def dependencies(names) - names.map {|n| Thread.new{ update_info(n) } }.each(&:join) - names.map do |name| + def dependencies(names, pool_size = 25) + update = -> (name, q) { update_info(name); name } + worker = Bundler::Worker.new(pool_size, update) + names.each {|name| worker.enq(name) } + + names.map do + name = worker.deq @cache.dependencies(name).map {|d| d.unshift(name) } end.flatten(1) end |