Поведение 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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