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:
Mike McQuaid 2019-04-18 14:46:40 +09:00
parent 4d6de005d8
commit 7fbfb02625
No known key found for this signature in database
GPG Key ID: 48A898132FD8EE70
2 changed files with 4 additions and 39 deletions

View File

@ -8,30 +8,6 @@ CLEANUP_DEFAULT_DAYS = 30
CLEANUP_MAX_AGE_DAYS = 120 CLEANUP_MAX_AGE_DAYS = 120
module CleanupRefinement 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 refine Pathname do
def incomplete? def incomplete?
extname.end_with?(".incomplete") extname.end_with?(".incomplete")
@ -403,7 +379,7 @@ module Homebrew
HOMEBREW_PREFIX/"Caskroom", HOMEBREW_PREFIX/"Caskroom",
] ]
end end
dirs.select(&:directory?).each.parallel do |dir| dirs.select(&:directory?).each do |dir|
system_command "find", system_command "find",
args: [dir, "-name", ".DS_Store", "-delete"], args: [dir, "-name", ".DS_Store", "-delete"],
print_stderr: false print_stderr: false

View File

@ -3,22 +3,11 @@ require "formula"
module Readall module Readall
class << self class << self
def valid_ruby_syntax?(ruby_files) def valid_ruby_syntax?(ruby_files)
ruby_files_queue = Queue.new
ruby_files.each { |f| ruby_files_queue << f }
failed = false failed = false
workers = (0...Hardware::CPU.cores).map do ruby_files.each do |ruby_file|
Thread.new do # As a side effect, print syntax errors/warnings to `$stderr`.
Kernel.loop do failed = true if syntax_errors_or_warnings?(ruby_file)
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
end end
workers.each(&:join)
!failed !failed
end end