2010-05-19 7 views
2

Je dois exécuter plusieurs threads d'arrière-plan dans un pool de threads avec le délai d'expiration. Le régime est quelque chose comme:Ruby plusieurs threads d'arrière-plan

#!/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' 
} 

Pourquoi si je cours que je reçois pas de sortie? (et pas d'attente de veille?)

Répondre

3

Le programme se termine lorsque le fil principal se termine. Vous devez attendre sur le fil créé par bar en utilisant join:

foo { 
    sleep 1 
    puts 'test' 
}.join 
Questions connexes