Walaupun Node mempunyai berbilang utas, JavaScript yang dijalankan pada v8 adalah satu utas. Modul child_process Node digunakan untuk mencipta proses anak dan kami boleh menggunakan sepenuhnya CPU melalui proses anak. Contoh:
Berikut ialah beberapa kaedah penciptaan proses termasuk garpu:
1.spawn(command, [args], [options]), memulakan proses baharu untuk melaksanakan arahan arahan, args ialah parameter baris arahan
2.exec(arahan, [pilihan], panggil balik), memulakan proses baharu untuk melaksanakan arahan arahan, panggil balik digunakan untuk mendapatkan input standard, output standard dan maklumat ralat apabila proses tamat
3.execFile(fail, [args], [options], [panggilan balik]), memulakan proses baharu untuk melaksanakan fail fail boleh laku, panggil balik digunakan untuk mendapatkan input standard, output standard dan maklumat ralat apabila proses tamat
4.fork(modulePath, [args], [options]), memulakan proses baharu untuk melaksanakan modul fail JavaScript dan proses anak Node dibuat pada masa ini
Komunikasi antara proses nod
Proses Ibu Bapa
Proses kanak-kanak
Perlu diingatkan bahawa kaedah penghantaran di sini adalah segerak, jadi tidak disyorkan untuk menghantar sejumlah besar data (anda boleh menggunakan paip sebaliknya, lihat untuk butiran: http://nodejs.org/api/ semua. html#process_child_process_spawn_command_args_options).
Dalam kes khas, jika nilai atribut cmd dalam mesej mengandungi awalan NODE_ (contohnya: {cmd: 'NODE_foo'} mesej), maka mesej ini tidak akan diserahkan kepada acara mesej (tetapi acara internalMessage), dan mereka digunakan secara dalaman oleh Node.
kaedah hantar ialah:
Di sini, sendHandle(handle) boleh digunakan untuk menghantar:
1.net.Soket atau paip TCP C asli, asli
2.net.Server, pelayan TCP
3.net.Soket, soket TCP
4.dgram.Soket C UDP asli, asli
5.dgram.Soket, soket UDP
Apabila hantar menghantar sendHandle, ia sebenarnya tidak (dan tidak boleh) menghantar objek JavaScript secara langsung, tetapi menghantar deskriptor fail (akhirnya dihantar sebagai rentetan JSON Proses lain boleh menggunakan deskriptor fail ini untuk memulihkan objek yang sepadan).
Sekarang lihat contoh:
Proses Ibu Bapa
Proses kanak-kanak
Akses program ini melalui port 7000, dan output mungkin sambungan – ibu bapa atau sambungan – anak. Di sini proses anak dan proses induk sedang mendengar pada port 7000 pada masa yang sama. Secara umumnya, berbilang proses mendengar port yang sama akan menyebabkan pengecualian EADDRINUSE Dalam kes ini, dua proses berbeza menggunakan deskriptor fail yang sama, dan lapisan bawah Node menetapkan pilihan SO_REUSEADDR pada soket apabila mendengar pada port membenarkan soket ini digunakan semula antara proses yang berbeza. Apabila berbilang proses mendengar port yang sama, deskriptor fail hanya boleh digunakan oleh satu proses pada masa yang sama, dan penggunaan soket oleh proses ini adalah preemptive.
modul kluster
Modul kluster telah ditambahkan dalam Node v0.8 Melalui modul kluster, anda boleh membina sekumpulan proses mendengar port yang sama pada mesin fizikal. Contoh:
Kami memanggil kaedah mendengar dalam proses pekerja, dan permintaan mendengar akan dihantar kepada proses induk. Jika proses induk sudah mempunyai pelayan mendengar yang memenuhi keperluan proses pekerja, maka pemegang pelayan ini akan diserahkan kepada pekerja Jika ia tidak wujud, proses induk akan mencipta satu dan kemudian menyerahkan pemegang kepada proses pekerja.
Dokumentasi yang lebih terperinci tentang kelompok: http://www.nodejs.org/api/cluster.html