ExpertiDict

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

fork

/fɔɹk/método

Método de Kernel e Process que cria um processo filho, cópia do atual, com memória em cópia sob escrita. Só funciona em Unix.

Onde usar

Aparece em servidores como Puma e Unicorn, que carregam a aplicação uma vez e criam workers com fork para economizar memória. Também dá paralelismo real, contornando o GVL.

Em código

pid = fork do
  puts "filho #{Process.pid}"
  exit 0
end
Process.wait(pid)
puts "pai terminou: #{$?.success?}"

Exemplos

Puma forks workers after loading the app.

O Puma cria workers com fork depois de carregar o app.

Reconnect to the database after the fork.

Reconecte ao banco depois do fork.

Cuidado

Conexões abertas, como banco e sockets, são herdadas pelo filho e precisam ser reabertas depois do fork; e o fork não existe no Windows.

Sinônimos

Process.fork

Veja também

Todos os termos de Ruby