2013-08-06 147 views
0

我已經運行在IRB以下,但是當它完成它沒有打出去/退出線程:如何在線程中處理線程?

count = 0 

Thread.new do 
    while count < 20 do 
    puts 'Hai' 
    count += 1 
    end 
    Thread.kill 
end 

它只是掛在那兒在控制檯中。有沒有辦法徹底退出線程?從我研究的線程應該結束後,它退出塊,但我無法找到任何有關此信息。謝謝!

+1

難道你只是困惑於什麼控制檯diplaying? – oldergod

+0

你可以運行我上面發佈的那個塊嗎?在第20次「海」之後,它不會退出 – perseverance

+0

在您定義線程後,您的提示就回來了。你的主線程(提示符)和你創建的線程是不一樣的。 – oldergod

回答

0

這是一個小例子,願它能幫助你。

begin 
    t = Thread.new do 
    loop do 
     @bar.increment! 
     STDERR.flush 
     sleep 1 
    end 
    end 
    yield 
    STDERR.puts ' done!' unless $?.exitstatus > 0 
rescue => e 
    STDOUT.puts "Error:" 
    STDOUT.puts e.message 
ensure 
    t.kill 
end