Возьмем этот краткий пример: у меня есть файл с именем parent.js
со следующим кодом:
var child_process = require('child_process')
var forker = child_process.fork(__dirname + '/child.js')
forker.on('message', function (msg) {
console.log('PARENT got message:', msg)
})
// sends a message to the forked process?
forker.send({msg: 'Parent message.'})
Первый вопрос: Я правильно понял? child_process.fork()
возвращает процесс forker, не так ли? (например, child_process.spawn()
?)
В любом случае, здесь код для child.js
:
process.on('message', function (msg) {
console.log('CHILD got message:', msg)
})
// sends a message to the forker process? why?
process.send({msg: 'Message from the child.'})
Второй вопрос: что означает process
внутри дочернего процесса? Думаю, к текущему разветвленному процессу? Если это так, когда я вызываю process.send()
, я правильно отправляю сообщение родительскому процессу?
Третий вопрос: возьмите этот пример (упрощенная версия Node: Up and Running):
var cluster = require('cluster')
if (cluster.isMaster) {
// fork child...
var worker = cluster.fork()
worker.on('message', function (msg) {
// do stuff
})
} else if (cluster.isWorker) {
process.send(aMessage)
}
То, что я нахожу неясным, таково: worker
является видом forker
предыдущего примера? И process.send()
внутри рабочего отправляет сообщение процессу forker?