summaryrefslogtreecommitdiff
path: root/lib/bundler/vendor
diff options
context:
space:
mode:
authorAndre Arko <andre@arko.net>2015-08-23 16:32:31 -0700
committerSamuel Giddins <segiddins@segiddins.me>2016-01-25 10:45:41 -0600
commit86418dbc983688281647b39d36739de73c245501 (patch)
treee41ada311cc8839e6de397385505f4c238c61990 /lib/bundler/vendor
parent35a2a97ad0c6ca92c593c89d294661c5a20d3226 (diff)
downloadbundler-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.rb12
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