6

私はこのコードを持っています:

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

私が期待するのは、「開始」に続いて「スレッドからこんにちは」が表示され、エコーバックされる入力を入力できることです。代わりに、「Start」と「Hello from thread」が表示され、プログラムが終了します。

のドキュメントからexit

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

しかし、私は新しいスレッドを作成したと思いましたか? メインプロセスを終了するのはなぜですか?

4

1 に答える 1

9

あなたはThread#exitドキュメントを見ています。Rubyスクリプトを終了するものですkillKernel#exit

puts "Start"
loop do
    Thread.start do
        puts "Hello from thread"
        Thread.exit
    end
    text = gets
    puts "#{text}"
end
puts "Done"
于 2013-09-04T03:23:04.467 に答える