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.