Metoda Process.fork clonează procesul Ruby curent într-un nou proces copil la nivelul nucleului sistemului de operare (folosind apelul de sistem fork() cu paginare Copy-on-Write), ocolind Global VM Lock (GVL) pentru paralelism complet pe mai multe nuclee CPU.
# Verifică disponibilitatea fork pe platforma curentă (UNIX/Linux/macOS):
if Process.respond_to?(:fork)
pid = Process.fork do
puts "[Copil PID #{Process.pid}]: Execut procesare intensivă pe nucleu dedicat..."
sleep 1
puts "[Copil]: Sarcină finalizată."
exit(0)
end
puts "[Părinte]: Am lansat procesul copil cu PID: #{pid}. Aștept finalizarea..."
Process.wait(pid) # Blochează până la terminarea copilului
puts "[Părinte]: Copilul a terminat cu succes."
end
Arhitectura Unicorn & Puma: Servere web de producție extrem de populare precum Unicorn și modul Clustered din Puma utilizează fork pentru a multiplica procesele worker fără a partaja memorie coruptibilă.
Întrebări & Exemple de Cod:
Process.fork și Process.wait în Ruby: Crearea Proceselor ParaleleAi o nelămurire despre utilizarea comenzii
Process.fork și Process.wait în Ruby: Crearea Proceselor Paralelesau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.