Ответ 1
Ваше понимание exec грубо верно, я беспокоюсь, что вы используете его, когда вам не нужно это делать... В вашем вопросе вы указываете только типы I/O-типов, которые node обрабатывает очень эффективно внутри него однопоточная модель событий. Несмотря на однопоточность, модель событий позволяет запускать код без блокировки основного цикла событий (если только вы не выполняете интенсивные операции с интенсивным процессором..., из которых запросы базы данных и обработка файлов не включены). Говоря, вы должны не нужно запускать дополнительный диктофон, чтобы делать то, что вы хотите.
Подумайте о динамике как о процессоре с одним процессором. Независимо от того, что вы можете сделать на машине с одним процессором, которую вы можете делать на вашем динамо, без каких-либо дополнительных сборов или созданных динамиков. Хотя, dyno имеет значительно меньше памяти, чем один процессор с одним ядерным процессором. Таким образом, для любых подпроцессов, которые вы хотите создать, не требуется другой динамометр для запуска. Каждому мастер-процессу, который вы хотите запустить, понадобится его собственный dyno.
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('An amount of data that will take 1 second to send');//This will not block the event loop
}).listen(1337, '127.0.0.1');
var http = require('http');
http.createServer(function (req, res) {
while(true) {
break after 1 second; //this will block the event loop for 1 second
}
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
Рассмотрим два сервера в приведенном выше коде. Оба сервера выполняют примерно одну секунду работы. Первый пример может обслуживать тысячи запросов в секунду, второй пример - только 1. Отправка данных, запросов к базе данных, запросов на сервер, файла ввода-вывода и т.д.... все будут вести себя как первый пример... очень мало всего в node ведут себя как второй пример. Если у вас есть что-то, что соответствует второму примеру, вам, вероятно, лучше выбрать другой язык, чем пытаться заставить node работать в прецеденте, для которого он очень плохо разработан.