, Ruby 1.9. 1.9 , , Ruby , #transfer. 2.4, 2. *.
1.9, #transfer . , #resume . Ruby 2.4 #resume , Fiber.yield(), .
( ):
require 'fiber'
fiber2 = nil
fiber1 = Fiber.new do
puts "In Fiber 1"
Fiber.yield
end
fiber2 = Fiber.new do
puts "In Fiber 2"
fiber1.resume
puts "In Fiber 2 again"
Fiber.yield
puts "Fiber 2 resumed"
end
fiber3 = Fiber.new do
puts "In Fiber 3"
end
fiber2.resume
fiber3.resume
fiber2.resume
#transfer, ( A B) A B, B, , Ruby , A , B . #transfer .
source
share