kaiwren / thread_pool forked from fizx/thread_pool

Ruby Thread Pool

This URL has Read+Write access

name age message
file .gitignore Loading commit data...
file CHANGELOG
file LICENSE
file README
file Rakefile
directory lib/
directory spec/
file thread_pool.gemspec
README
This is a fork of http://github.com/fizx/thread_pool
_____________________
This code is still pretty early, and not yet used in production.  That said, I am interested in feedback.  You can send 
me a message on GitHub's internal messaging system ( http://github.com/inbox/new/fizx ).

A simple executor-style ThreadPool for Ruby (with tests, yay!)

Usage:

  require "rubygems"
  require "thread_pool"
  pool = ThreadPool.new(threads = 10)
  pool.execute { puts "I'm writing from a thread" }
  pool.join
  
It's often useful to make sure that the properties of Ruby's blocks don't bite you.  The following code will usually 
print three nils, because n keeps changing.

  pool = ThreadPool.new(threads = 10)
  numbers = [1, 2, 3]
  while n = numbers.shift
    pool.execute { puts n.inspect }
  end
  pool.join
  
Passing arguments to execute avoids this. i.e.:

  pool = ThreadPool.new(threads = 10)
  numbers = [1, 2, 3]
  while n = numbers.shift
    pool.execute(n) {|local| puts local.inspect }
  end
  pool.join