Sobes.tech
Middle

Ինչպես է իրականացվում միակամ տողային ծրագրավորումը Node.js-ում?

sobes.tech AI

Պատասխան AI-ից

Node.js-ը JavaScript կոդի գործարկման միակ թելային միջավայր է՝ շնորհիվ Event Loop մեխանիզմի: Այն անընդհատ ստուգում է իրադարձությունների հերթականությունը և իրականացնում համապատասխան callback-ները:

Բլոկային գործողությունների (մտածող/արտածող, ֆայլերի հետ աշխատանք, ցանց) կատարման համար Node.js-ը օգտագործում է libuv գրադարանի Thread Pool-ը: Այս գործողությունները կատարվում են ասինխրոն, առանձին թելերով՝ առանց հիմնական Event Loop-ի թելին խոչընդոտելու: Արդյունքները կամ սխալները վերադարձվում են Event Loop-ին callback-ների միջոցով:

Հիմնական բաղադրիչներ՝

  • Event Loop: Հիմնական ցիկլը, որը մշակում է իրադարձությունները և ֆունկցիաների կանչերը:
  • Callback հերթ: Ասինխրոն գործողությունների ավարտված callback-ների հերթը:
  • Thread Pool: Բաժան թելեր՝ բլոկային առաջադրանքների կատարման համար:
  • libuv: Տարածածր մակարդակի գրադարան՝ Event Loop և Thread Pool ապահովելու համար:
// Ֆայլի ասինխրոն գործողության օրինակ
const fs = require('fs');

fs.readFile('file.txt', 'utf8', (err, data) => {
  // Այս callback-ը կիրականացվի ֆայլի ընթերցումից հետո
  // առանձին Thread Pool-ի թելում
  if (err) {
    console.error(err);
    return;
  }
  console.log(data);
});

console.log('Այս հաղորդագրությունը կհայտնվի առաջինը, քանի որ ֆայլի ընթերցումը ասինխրոն է');

Այսպիսով, Node.js-ը ապահովում է բարձր կատարողականություն՝ մրցակցային առաջադրանքների համար՝ շնորհիվ ոչ բլոկային մուտք/ ելք գործողությունների, չնայած JavaScript-ը աշխատում է միայն մեկ թելով։