Process.fork și Process.wait în Ruby: Crearea Proceselor Paralele în Ruby

Sistem și Procese Ruby 1.8+ (pe sisteme UNIX/Linux) Q&A / Distribuie cod
Sintaxă
Process.fork { ... }
Process.wait(pid)
Process.kill(semnal, pid)

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ă.

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Process.fork și Process.wait în Ruby: Crearea Proceselor Paralele

Ai o nelămurire despre utilizarea comenzii Process.fork și Process.wait în Ruby: Crearea Proceselor Paralele sau 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.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.