Ruby · Avançado · Inglês · Técnico
Ractor
Mecanismo para paralelismo real em Ruby: cada Ractor tem seu próprio GVL e só troca dados por mensagens ou objetos compartilháveis. Costuma ser tratado como experimental.
Onde usar
Serve para tarefas de CPU em paralelo sem processos. Na prática o uso é limitado, porque muitas gems não são compatíveis com Ractors e o isolamento de objetos é rígido.
Em código
r = Ractor.new do
Ractor.receive * 2
end
r.send(21)
# resultado: r.value (r.take no Ruby 3)Exemplos
Each Ractor has its own GVL, so they run in parallel.
Cada Ractor tem seu próprio GVL, então eles rodam em paralelo.
Most gems still aren't Ractor-safe.
A maioria das gems ainda não é segura para Ractors.
Cuidado
Não é uma Thread: Ractors não compartilham objetos mutáveis, e acessar uma variável externa dentro de um Ractor levanta erro.
Origem
Junção de Ruby e actor, do modelo de atores.