2013-09-04 13 views
6

私は、コードのこの部分を持っている:なぜRubyスレッドを終了すると私のプログラム全体が終了するのですか?

puts "Start" 
loop do 
    Thread.start do 
     puts "Hello from thread" 
     exit 
    end 
    text = gets 
    puts "#{text}" 
end 
puts "Done" 

私が期待する何が「スレッドからこんにちは」「スタート」に続いて見ていると、私は私に戻ってエコーになるだろう入力を入力することができます。代わりに私は "開始"と "こんにちはスレッドから"取得し、プログラムが終了します。 exitのドキュメントから

はTHRとスケジュールを実行する別のスレッドを終了します。このスレッド がすでに終了しているとマークされている場合、exitはスレッドを返します。これが の場合、メインスレッドまたは最後のスレッドはプロセスを終了します。

しかし、私は新しいスレッドを生み出したと思いましたか?なぜ私のメインプロセスを終了していますか?

答えて

8

Thread#exitのドキュメントをご覧ください。 killKernel#exitで、Rubyスクリプトを終了します。

puts "Start" 
loop do 
    Thread.start do 
     puts "Hello from thread" 
     Thread.exit 
    end 
    text = gets 
    puts "#{text}" 
end 
puts "Done" 
関連する問題