class Puma::ThreadPool

A simple thread pool management object.

Attributes

spawned[R]
trim_requested[R]

Public Class Methods

new(min, max, &blk) 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/puma/thread_pool.rb, line 14
def initialize(min, max, &blk)
  @cond = ConditionVariable.new
  @mutex = Mutex.new

  @todo = []

  @spawned = 0
  @waiting = 0

  @min = min
  @max = max
  @block = blk

  @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/puma/thread_pool.rb, line 44
def backlog
  @mutex.synchronize { @todo.size }
end