Sobes.tech
Middle

Kuidas on Node.js-s rakendatud ühetoruline programmeerimine?

sobes.tech AI

Vastus AI-lt

Node.js on ühe lõngaga tööaeg JavaScripti koodi täitmiseks tänu Event Loop mehhanismile. See kontrollib pidevalt sündmuste järjekorda ja täidab vastavaid tagasikutsumisi (callback'e).

Blokeerivate operatsioonide (sisend/väljund, failidega töötamine, võrk) täitmiseks kasutab Node.js libuv teegist Thread Pooli. Need operatsioonid toimuvad asünkroonselt eraldi lõngades, mitte blokeerides peamist Event Loopi lõnga. Tulemused või vead tagastatakse tagasi Event Loopi callback'ide kaudu.

Peamised komponendid:

  • Event Loop: Peamine täitmistsükkel, mis töötleb sündmusi ja funktsioonikutsumisi.
  • Callback järjekord: Järjekord valmis asünkroonsete operatsioonide callback'ide jaoks.
  • Lõngade bassein: Eraldi lõngad blokeerivate ülesannete täitmiseks.
  • libuv: Madala taseme teek, mis pakub Event Loopi ja Thread Pooli.
// Näide asünkroonsest failitoimingust
const fs = require('fs');

fs.readFile('file.txt', 'utf8', (err, data) => {
  // See callback käivitatakse pärast faili lugemise lõpetamist
  // eraldi Thread Pooli lõngas
  if (err) {
    console.error(err);
    return;
  }
  console.log(data);
});

console.log('See sõnum ilmub esimesena, kuna faili lugemine on asünkroonne');

Sel viisil tagab Node.js kõrge jõudluse konkurentsivõimeliste ülesannete jaoks, kasutades mitte-blokeerivat sisend/väljundit, hoolimata sellest, et JavaScript töötab ühes lõngas.