threads/thread_group_list_no_parens.rb
tests/_examples/threads/thread_group_list_no_parens.rb in the metorex repository.
# A ThreadGroup lists the living threads in it: the main thread and the
# threads it starts belong to the default group until another group takes
# one, and a thread that has finished is listed in none.
p Thread.main.group.equal?(ThreadGroup::Default)
p ThreadGroup::Default.list.include?(Thread.main)
ready = Queue.new
release = Queue.new
worker = Thread.new do
ready << :started
release.pop
end
ready.pop
p ThreadGroup::Default.list.include?(worker)
own = ThreadGroup.new
p own.list
own.add worker
p [own.list.include?(worker), ThreadGroup::Default.list.include?(worker), worker.group.equal?(own)]
release << :go
worker.join
p [own.list, ThreadGroup::Default.list.include?(worker)]
Output:
true
true
true
[]
[true, false, true]
[[], false]