class Rsrb::Misc::ThreadPool::Executor

Attributes

active[R]

Public Class Methods

new(queue, mutex) click to toggle source
# File lib/rsrb/core/util.rb, line 304
def initialize(queue, mutex)
  @thread = Thread.new do
    loop do
      mutex.synchronize { @tuple = queue.shift }
      if @tuple
        args, block = @tuple
        @active = true
        begin
          block.call(*args)
        rescue Exception => e
          log = Logging.logger['exec']
          log.error "Threadpool error"
          log.error e
        end
        block.complete = true
      else
        @active = false
        sleep 0.01

      end
    end
  end
end

Public Instance Methods

close() click to toggle source
# File lib/rsrb/core/util.rb, line 328
def close
  @thread.exit
end