How can I get the current amount of open Fibers in a ruby application? My app uses EventMachine Synchrony lib for concurrency handling. While googling, I've not found any API which would return it.
For example if I have this piece of code:
EM::Synchrony::FiberIterator.new(@outputs, @outputs.size).each do |output|
# some code goes here
end
then how can I know how many fibers are there running? Without manually using counter++ and of course without @some_arr.size.
Ok, so 1 solution was found for this issue:
You can count number of existing objects (of all types) in ruby.
In our case we want to count the objects of type/class 'Fiber', so we use
ObjectSpace.each_objectruby API:(we are interested only in alive Fibers, that's why using
alive?API)ObjectSpace for reference: https://ruby-doc.org/core-1.9.3/ObjectSpace.html
Fiber for reference: https://ruby-doc.org/core-1.9.3/Fiber.html