Spawn adalah perintah yang dirancang untuk menjalankan perintah sistem. Ketika Anda menjalankan spawn, Anda mengirimkannya perintah sistem yang akan dijalankan pada prosesnya sendiri, tetapi tidak menjalankan kode lebih lanjut dalam proses simpul Anda. Anda dapat menambahkan pendengar untuk proses yang Anda buat, untuk memungkinkan kode Anda berinteraksi dengan proses menelurkan, tetapi tidak ada instance V8 baru dibuat (kecuali tentu saja perintah Anda adalah perintah Node lain, tetapi dalam hal ini Anda harus menggunakan garpu!) Dan hanya satu salinan modul simpul Anda yang aktif pada prosesor.
Fork adalah turunan khusus dari spawn, yang menjalankan turunan baru dari mesin V8. Artinya, Anda pada dasarnya dapat membuat beberapa pekerja, berjalan pada basis kode Node yang sama persis, atau mungkin modul yang berbeda untuk tugas tertentu. Ini paling berguna untuk membuat kumpulan pekerja. Sementara model peristiwa async node memungkinkan satu inti mesin digunakan secara efisien, itu tidak memungkinkan proses simpul untuk menggunakan mesin multi-inti. Cara termudah untuk mencapai ini adalah dengan menjalankan banyak salinan dari program yang sama, pada satu prosesor.
Aturan praktis yang baik adalah proses simpul satu hingga dua per inti, mungkin lebih untuk mesin dengan rasio jam ram / cpu clock yang baik, atau untuk proses simpul yang berat pada I / O dan lampu pada kerja CPU, untuk meminimalkan waktu henti acara loop sedang menunggu acara baru. Namun, saran yang terakhir adalah optimasi mikro, dan akan membutuhkan pembandingan yang cermat untuk memastikan situasi Anda sesuai dengan kebutuhan akan banyak proses / inti. Anda benar-benar dapat menurunkan kinerja dengan menelurkan terlalu banyak pekerja untuk mesin / skenario Anda.
Pada akhirnya Anda dapat menggunakan spawn dengan cara yang melakukan hal di atas, dengan mengirim spawn perintah Node. Tapi ini akan konyol, karena garpu melakukan beberapa hal untuk mengoptimalkan proses pembuatan instance V8. Hanya membuatnya jelas, yang pada akhirnya muncul meliputi pertigaan. Fork hanya optimal untuk kasus penggunaan khusus ini, dan sangat berguna.
http://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback
var child = require('child_process').fork('child.js');
misalnya pada aplikasi utama saya, sekarang saya akan memiliki 2 core yang terpisah berjalan. Jika saya menjalankan heavy untuk loop di child.js (proses), pada dasarnya saya akan menggunakan lebih banyak core untuk memperkuat child.js, kan? Akankah penggunaan CPU mempengaruhi inti aplikasi utama saya?