class SQS::Job::ThreadPool

Attributes

spawned[R]
trim_requested[R]

Public Class Methods

new(min, max, *extra, &block) click to toggle source

Maintain a minimum of min and maximum of max threads in the pool.

The block passed is the work that will be performed in each thread.

# File lib/sqs/job/thread_pool.rb, line 16
def initialize(min, max, *extra, &block)
  @cond  = ConditionVariable.new
  @mutex = Mutex.new

  @todo = []

  @spawned = 0
  @waiting = 0

  @min   = Integer(min)
  @max   = Integer(max)
  @block = block
  @extra = extra

  @shutdown = false

  @trim_requested = 0

  @workers = []

  @auto_trim = nil

  @mutex.synchronize do
    @min.times { spawn_thread }
  end
end

Public Instance Methods

backlog() click to toggle source

How many objects have yet to be processed by the pool?

# File lib/sqs/job/thread_pool.rb, line 47
def backlog
  @mutex.synchronize { @todo.size }
end