threads/thread_class_settings.rb
tests/_examples/threads/thread_class_settings.rb in the metorex repository.
# `Thread.report_on_exception=` is remembered and read back, a thread shows
# none of the interpreter's own slots among its instance variables, and a
# SizedQueue is a kind of Queue.
p(Thread.report_on_exception)
Thread.report_on_exception = false
p(Thread.report_on_exception)
quiet = Thread.new { raise("stopped") }
p(quiet.report_on_exception)
begin
quiet.join
rescue RuntimeError => trouble
p(trouble.message)
end
Thread.report_on_exception = true
finished = Thread.new { 1 }
finished.join
p(finished.instance_variables)
p(Thread::SizedQueue.superclass)
p(SizedQueue.new(1).is_a?(Queue))
Output:
true
false
false
"stopped"
[]
Thread::Queue
true