Возьмем этот краткий пример: у меня есть файл с именем 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?