lib/zold/node/farm.rb in zold-0.10.10 vs lib/zold/node/farm.rb in zold-0.10.11

- old
+ new

@@ -19,10 +19,11 @@ # SOFTWARE. require 'time' require_relative '../log' require_relative '../score' +require_relative '../verbose_thread' # The farm of scores. # Author:: Yegor Bugayenko (yegor256@gmail.com) # Copyright:: Copyright (c) 2018 Yegor Bugayenko # License:: MIT @@ -61,27 +62,29 @@ first = Score.new(Time.now, host, port, @invoice, strength: strength) @best = [first] @scores << first @threads = (1..threads).map do |t| Thread.new do - Thread.current.name = "farm-#{t}" - loop do - s = @scores.pop - next unless s.valid? - @semaphore.synchronize do - before = @best.map(&:value).max - @best << s - after = @best.map(&:value).max - @best.reject! { |b| b.value < after } - @log.debug("#{Thread.current.name}: best is #{@best[0]}") if before != after + VerboseThread.new(@log).run do + Thread.current.name = "farm-#{t}" + loop do + s = @scores.pop + next unless s.valid? + @semaphore.synchronize do + before = @best.map(&:value).max + @best << s + after = @best.map(&:value).max + @best.reject! { |b| b.value < after } + @log.debug("#{Thread.current.name}: best is #{@best[0]}") if before != after + end + if @scores.length < 4 + @scores << Score.new( + Time.now, host, port, @invoice, + strength: strength + ) + end + @scores << s.next end - if @scores.length < 4 - @scores << Score.new( - Time.now, host, port, @invoice, - strength: strength - ) - end - @scores << s.next end end end @log.debug("Farm started with #{threads} threads at #{host}:#{port}") end