Support discovering yield state of individual Fibers
#3 [ruby-core:54461] Updated by halorgium (Tim Carey-Smith) over 4 years ago
There was some confusion about what I am proposing.
I realised I didn't even explain this!
I would like to be able to see the backtrace of individual Fibers.
This would allow our Celluloid.stack_dump to show each point at which the Fibers are waiting.
#4 [ruby-core:54479] Updated by halorgium (Tim Carey-Smith) over 4 years ago
I have implemented Fiber#backtrace in Rubinius and have a demo of what I wanted to achieve.
This depends on another change, Thread#root_fiber, which returns the root_fiber of the specified Thread.
#5 [ruby-core:54635] Updated by ko1 (Koichi Sasada) over 4 years ago
- Assignee set to ko1 (Koichi Sasada)
Sorry, I can't understand what is your proposal.
At first example https://gist.github.com/halorgium/f63abf177a96d7113ce3,
there is only "thread.backtrace". However, we have already Thread#backtrace.
ruby 2.1.0dev (2013-03-18 trunk 39808) [i386-mswin32_100]
BTW, please add more specific description.
For example, Rdoc style description for proposed methods
is very welcome because we can understand your proposal
and we (especially I, who is not good English writer)
can copy this document to implemented source code!
#6 [ruby-core:54651] Updated by halorgium (Tim Carey-Smith) over 4 years ago
When you have many Fibers inside a Thread.
You cannot find where the FIbers are currently suspended.
I propose adding a method to Fiber to return this information.
Calling Fiber.current.backtrace would be equivalent to Thread.current.backtrace due to the nature of Fibers.
Does this help with understanding?