Ruby · Avançado · Inglês · Técnico
Fiber
Unidade de execução leve e cooperativa: roda até chamar Fiber.yield, pausa, e continua do mesmo ponto com resume. O agendamento é manual, sem preempção.
Onde usar
É a base do Enumerator externo e de servidores assíncronos, como os que usam a gem async. No code review, diferencie de Thread: fibers só trocam de contexto quando o código manda.
Em código
f = Fiber.new do
Fiber.yield 1
Fiber.yield 2
3
end
p f.resume, f.resume, f.resume
# imprime 1, 2 e 3Exemplos
Each resume runs the fiber until the next Fiber.yield.
Cada resume roda a fiber até o próximo Fiber.yield.
Fibers are cheap, so you can create thousands of them.
Fibers são baratas, então dá para criar milhares delas.
Cuidado
Não é paralelismo nem Thread do sistema operacional: só uma fiber roda por vez, e a troca é explícita.
Sinônimos
corrotina
Origem
Do inglês fiber, fibra: um fio de execução mais fino que uma thread.