turri
turri

Reputation: 21

Ruby multiple background threads

I need to run multiple background threads in a thread pool with timeout. The scheme is something like:

    #!/usr/bin/env ruby

require 'thread'

def foo(&block)
  bar(block)
end

def bar(block)
  Thread.abort_on_exception=true
  @main = Thread.new { block.call }
end


foo {
sleep 1
puts 'test'
}

Why if i run that i get no output? (and no sleep wait?)

Upvotes: 2

Views: 927

Answers (2)

Filipe Miguel Fonseca
Filipe Miguel Fonseca

Reputation: 6436

Try the work_queue gem http://rubygems.org/gems/work_queue/

Upvotes: 3

sepp2k
sepp2k

Reputation: 370142

The program ends when the main thread ends. You have to wait on the thread created by bar using join:

foo {
  sleep 1
  puts 'test'
}.join

Upvotes: 3

Related Questions