ExpertiDict

Ruby · Avançado · Inglês · Técnico

Fiber

/ˈfaɪbɚ/substantivo

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 3

Exemplos

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.

Veja também

Todos os termos de Ruby