From: Erik Veenstra Date: 2008-07-13T19:13:06+09:00 Subject: ThreadLimiter 0.1.0 ThreadLimiter 0.1.0 is released. RDoc: http://www.erikveen.dds.nl/threadlimiter/doc/index.html Download: http://rubyforge.org/projects/threadlimiter/index.html gegroet, Erik V. - http://www.erikveen.dds.nl/ ---------------------------------------------------------------- ThreadLimiter forks threads like Thread.fork(), but limits the number of concurrently running threads. ThreadLimiter isn't a thread pool. Each fork really starts a new thread. Example: Get the titles of a large collections of URL's. The traditional way, using Thread directly: urls = [.....] # A lot of URL's. Maybe even thousends. titles = urls.collect do |url| Thread.fork do # ... get the title of the url... end end.collect do |thread| thread.value end With ThreadLimiter#fork(): thread_limiter = ThreadLimiter.new(10) # Max. 10 concurrently running threads. urls = [.....] # A lot of URL's. Maybe even thousends. titles = urls.collect do |url| thread_limiter.fork do # ... get the title of the url... end end.collect do |thread| thread.value end With Enumerable#threaded_collect(): urls = [.....] # A lot of URL's. Maybe even thousends. titles = urls.threaded_collect(10) do |url| # Max. 10 concurrently running threads. # ... get the title of the url... end ----------------------------------------------------------------