Поведение Nodejs с несколькими вызовами ввода-выводаJavascript

Форум по Javascript
Anonymous
Поведение Nodejs с несколькими вызовами ввода-вывода

Сообщение Anonymous »

Я понимаю, что Nodejs использует Libuv Library для задач ввода/вывода. По умолчанию Libuv использует четыре потока для выполнения задач ввода -вывода. Я пытаюсь понять поведение LIBUV, когда запланировано более четырех задач ввода/вывода. Сделает ли поток ожидание, пока он не завершит чтение, назначенный файл, прежде чем читать другой файл, или он переключается между множеством незаконченных файлов. несколько потоков чтения < /p>
const fs = require('node:fs');
const path = require('node:path');

function getFilePaths(directory){
let files = fs.readdirSync(directory)
return files
.map((file) => path.join(directory, file))
.filter((filePath) => fs.statSync(filePath).isFile())
}

const directory = 'D:\\test-folder';

const files = getFilePaths(directory)

const streams = []

files.forEach((file, index)=>{
streams.push([index, fs.createReadStream(file)])
})

streams.forEach(([index, stream])=>{
stream.on('data', () => {
console.log(`Data: Stream ${index}`);
});

stream.on('end', () => {
console.log(`End: Stream ${index}`);
});

stream.on('error', (err) => {
console.error(`Error: Stream ${index}`);
});

})
< /code>
В выводе я ожидал, что по крайней мере один из первых четырех файлов будет полностью прочитал до получения каких -либо данных для оставшихся файлов. Вместо этого появляется, что потоки LIBUV не ждите, пока файл будет полностью прочитал перед началом чтения другого файла. < /P>
Это ожидаемое поведение? < /P>


Подробнее здесь: https://stackoverflow.com/questions/793 ... -i-o-calls

Вернуться в «Javascript»