Sobes.tech
Middle

Cum se implementează programarea cu un singur fir în Node.js?

sobes.tech AI

Răspuns de la AI

Node.js este un mediu de execuție cu un singur fir pentru executarea codului JavaScript datorită mecanismului Event Loop. Verifică în mod continuu coada de evenimente și execută callback-urile corespunzătoare.

Pentru operațiuni blocante (intrare/ieșire, lucru cu fișiere, rețea), Node.js utilizează un pool de fire (Thread Pool) din biblioteca libuv. Aceste operațiuni sunt executate asincron în fire separate, fără a bloca firul principal al Event Loop-ului. Rezultatele sau erorile sunt returnate înapoi în Event Loop prin callback-uri.

Componente cheie:

  • Event Loop: Ciclul principal de execuție care procesează evenimentele și apelurile de funcții.
  • Coada de callback-uri: Coada pentru callback-urile operațiunilor asincrone finalizate.
  • Pool de fire: Fire separate pentru executarea sarcinilor blocante.
  • libuv: Biblioteca de nivel inferior care furnizează Event Loop și Thread Pool.
// Exemplu de operațiune asincronă cu fișier
const fs = require('fs');

fs.readFile('file.txt', 'utf8', (err, data) => {
  // Acest callback va fi executat după finalizarea citirii fișierului
  // într-un fir separat din Thread Pool
  if (err) {
    console.error(err);
    return;
  }
  console.log(data);
});

console.log('Acest mesaj va apărea primul, deoarece citirea fișierului este asincronă');

Astfel, Node.js asigură performanțe ridicate pentru sarcini concurente datorită intrării/ieșirii non-blocante, în ciuda faptului că rulează pe un singur fir pentru JavaScript.