ExpertiDict

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

Ractor

/ˈræktɚ/substantivo

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.

Veja também

Todos os termos de Ruby