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