次のコードでスレッドを開始した場合、スレッド自体から終了呼び出しをトラップ/検出して、終了する前にクリーンアップを行うにはどうすればよいですか?
thr = Thread.new { sleep }
thr.status # => "sleep"
thr.exit
thr.status # => false
以下のようになるのではないかと思っていたのですが、よくわかりません。
thr = Thread.new {
begin
sleep
rescue StandardError => ex
puts ex.message
rescue SystemExit, Interrupt
puts 'quit'
ensure
puts 'quit'
end
}
thr.status # => "sleep"
thr.exit #=> "quit"
thr.status # => false