Remove usage of Thread.new
I benchmarked these both locally and neither use of `Thread.new` provides any measurable speedup (and in the `readall` case appears to slow things down) on my 8 core machine.
This commit is contained in:
		
							parent
							
								
									4d6de005d8
								
							
						
					
					
						commit
						7fbfb02625
					
				@ -8,30 +8,6 @@ CLEANUP_DEFAULT_DAYS = 30
 | 
			
		||||
CLEANUP_MAX_AGE_DAYS = 120
 | 
			
		||||
 | 
			
		||||
module CleanupRefinement
 | 
			
		||||
  refine Enumerator do
 | 
			
		||||
    def parallel
 | 
			
		||||
      queue = Queue.new
 | 
			
		||||
 | 
			
		||||
      each do |element|
 | 
			
		||||
        queue.enq(element)
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      workers = (0...Hardware::CPU.cores).map do
 | 
			
		||||
        Thread.new do
 | 
			
		||||
          Kernel.loop do
 | 
			
		||||
            begin
 | 
			
		||||
              yield queue.deq(true)
 | 
			
		||||
            rescue ThreadError
 | 
			
		||||
              break # if queue is empty
 | 
			
		||||
            end
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      workers.each(&:join)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  refine Pathname do
 | 
			
		||||
    def incomplete?
 | 
			
		||||
      extname.end_with?(".incomplete")
 | 
			
		||||
@ -403,7 +379,7 @@ module Homebrew
 | 
			
		||||
          HOMEBREW_PREFIX/"Caskroom",
 | 
			
		||||
        ]
 | 
			
		||||
      end
 | 
			
		||||
      dirs.select(&:directory?).each.parallel do |dir|
 | 
			
		||||
      dirs.select(&:directory?).each do |dir|
 | 
			
		||||
        system_command "find",
 | 
			
		||||
          args:         [dir, "-name", ".DS_Store", "-delete"],
 | 
			
		||||
          print_stderr: false
 | 
			
		||||
 | 
			
		||||
@ -3,22 +3,11 @@ require "formula"
 | 
			
		||||
module Readall
 | 
			
		||||
  class << self
 | 
			
		||||
    def valid_ruby_syntax?(ruby_files)
 | 
			
		||||
      ruby_files_queue = Queue.new
 | 
			
		||||
      ruby_files.each { |f| ruby_files_queue << f }
 | 
			
		||||
      failed = false
 | 
			
		||||
      workers = (0...Hardware::CPU.cores).map do
 | 
			
		||||
        Thread.new do
 | 
			
		||||
          Kernel.loop do
 | 
			
		||||
            begin
 | 
			
		||||
              # As a side effect, print syntax errors/warnings to `$stderr`.
 | 
			
		||||
              failed = true if syntax_errors_or_warnings?(ruby_files_queue.deq(true))
 | 
			
		||||
            rescue ThreadError
 | 
			
		||||
              break
 | 
			
		||||
            end
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
      ruby_files.each do |ruby_file|
 | 
			
		||||
        # As a side effect, print syntax errors/warnings to `$stderr`.
 | 
			
		||||
        failed = true if syntax_errors_or_warnings?(ruby_file)
 | 
			
		||||
      end
 | 
			
		||||
      workers.each(&:join)
 | 
			
		||||
      !failed
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user