Для волокон у нас есть классический пример: генерация чисел Фибоначчи
fib = Fiber.new do
x, y = 0, 1
loop do
Fiber.yield y
x,y = y,x+y
end
end
Зачем нам нужны волокна? Я могу переписать это с помощью одного и того же Proc (фактически закрытия)
def clsr
x, y = 0, 1
Proc.new do
x, y = y, x + y
x
end
end
So
10.times { puts fib.resume }
и
prc = clsr
10.times { puts prc.call }
вернет тот же результат.
Итак, каковы преимущества волокон. Какие вещи я могу писать с помощью волокон, которые я не могу сделать с lambdas и другими замечательными функциями Ruby?