O node.js executa leitura / gravação de arquivo assíncrono no thread principal?
Eu pensava que o processamento assíncrono, como o arquivo de leitura, é processado em outro thread e notifica o thread principal quando a leitura é concluída em outro thread.
Eu tentei seguir.
const fs = require("fs")
console.time(1)
fs.readFile("largefile", x => console.timeEnd(1))
Isso mostra1500ms
.
Em segundo lugar, tentei seguir.
const fs = require("fs")
console.time(1)
fs.readFile("largefile", x => console.timeEnd(1))
// block main thread 1sec
const s = Date.now()
while(Date.now() - s < 1000);
Vai mostrar1500ms
se o processo assíncrono for processado em outro encadeamento. No entanto, eu tenho2500ms
.
Eu tentei outro.
const fs = require("fs")
console.time(1)
fs.readFile("largefile", x => console.timeEnd(1))
setInterval(() => {
const s = Date.now()
while(Date.now() - s < 100);
}, 100)
Espero alguns minutos, mas não há mensagem.
O nodejs processa processamento pesado no encadeamento principal?
Devo usarchild_process
quando eu preciso ler e gravar muitos arquivos grandes?