Sobes.tech
Middle

Kako je implementirano jednov threadsko programiranje u Node.js?

sobes.tech АИ

Одговор од АИ

Node.js je jednostruki okruženje za izvršavanje JavaScript koda zahvaljujući mehanizmu Event Loop. Neprekidno proverava red događaja i izvršava odgovarajuće callback funkcije.

Za izvršavanje blokirajućih operacija (ulaz/izlaz, rad sa fajlovima, mreža), Node.js koristi bazen niti (Thread Pool) iz biblioteke libuv. Ove operacije se izvršavaju asinhrono u posebnim nitima, ne blokirajući glavni nit Event Loop-a. Rezultati ili greške se vraćaju nazad u Event Loop putem callback funkcija.

Ključni sastavni delovi:

  • Event Loop: Glavna petlja izvršavanja koja obrađuje događaje i pozive funkcija.
  • Red callbackova: Red za callbackove završених asinhronih operacija.
  • Bazen niti: Posebne niti za izvršavanje blokirajućih zadataka.
  • libuv: Niskonivojska biblioteka koja obezbeđuje Event Loop i Thread Pool.
// Primer asinhrone operacije sa fajlom
const fs = require('fs');

fs.readFile('file.txt', 'utf8', (err, data) => {
  // Ovaj callback će biti izvršen nakon završetka čitanja fajla
  // u posebnoj niti iz Thread Pool-a
  if (err) {
    console.error(err);
    return;
  }
  console.log(data);
});

console.log('Ova poruka će se pojaviti prvi, jer je čitanje fajla asinhrono');

Na ovaj način, Node.js obezbeđuje visok performans za konkurentne zadatke zahvaljujući neblokirajućem ulazu/izlazu, uprkos tome što JavaScript izvršava u jednom thread-u.