class RBThreadPool::RBThreadElastic

Public Class Methods

new(queue,ex_quit = false , log = nil) click to toggle source
# File lib/core/rb_elastic.rb, line 3
def initialize(queue,ex_quit = false , log = nil)
  @queue = queue
  @log = log
  @ex_quit = ex_quit
  @condition = true
end

Public Instance Methods

fork() click to toggle source
# File lib/core/rb_elastic.rb, line 10
def fork
  return generate_elastic_thread
end

Private Instance Methods

generate_elastic_thread() click to toggle source
# File lib/core/rb_elastic.rb, line 16
def generate_elastic_thread
  return Thread.new do
    Thread.current.name = "RbThr:Elastic #{Thread.current.to_s}" if Thread.respond_to?(:name=)
    queue = @queue
    while @condition
      begin
        Thread.current.exit if queue.empty?
        task = queue.pop(true)
        task.call
      rescue Interrupt
        task.call unless task.nil?
        Thread.current.exit
          rescue
      rescue => ex
        raise Exception, ex.message if @log.nil?
        @log.error("ElasticThread:: msg: #{ex.message}, backtrace: #{ex.backtrace}")
        Thread.current.exit if @ex_quit
      end
    end
  end
end