Transfers allowed into Fibers that have resumed into other fibers
|ruby -v:||ruby 2.0.0dev (2012-03-06) [x86_64-darwin11.3.0]||Backport:|
Consider the following code:
require 'fiber' def foo order =  main_fiber = Fiber.current a = Fiber.new do order << 2 x = Fiber.new do order << 4 main_fiber.transfer order << 6 end order << 3 x.resume order << 7 end order << 1 a.transfer order << 5 a.transfer order << 8 end
It produces output:
[1, 2, 3, 4, 5, 7, 8]
Note: the missing 6. I'd expect either the array to be 1-8 OR for an exception to be raised after 5 when the main fiber attempts to transfer into a again.
Either it shouldn't be possible to transfer into a Fiber that is blocked resuming another Fiber, OR it should automatically resume the sub-Fiber.