Ruby · Avançado · Inglês · Técnico
fork
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