fiber = Fiber.new { puts 'Hello, Fiber' Fiber.yield puts 'Hello (again)' } fiber.resume fiber.resume fiber.resume fiber = Fiber.new { |first| puts first second = Fiber.yield('goodbye') puts second 'goodbye (again)' } puts fiber.resume('hello') puts fiber.resume('hello (again)') fib = Fiber.new { a, b = 0, 1 loop do a, b = b, a+b Fiber.yield(a) end } puts 10.times.map { fib.resume } puts fib.resume puts fib.resume fib.resume fiber = Fiber.new { puts 'OMG' } Thread.fork { fiber.resume }.join fiber = Fiber.new { Thread.fork { Fiber.yield }.join } fiber.resume