Sobes.tech
Middle

Ako je implementované jednovláknové programovanie v Node.js?

sobes.tech AI

Odpoveď od AI

Node.js je jednostrano okruženje za izvršavanje JavaScript koda захваљујући механизму Event Loop. Он непрекидно проверава ред догађаја и извршава одговарајуће callback-ове.

За извршавање блокирајућих операција (улаз/излаз, рад са датотекама, мрежа), Node.js користи пул нитова (Thread Pool) из библиотеке libuv. Ове операције се извршавају асинхронно у посебним нитима, без блокирања главне нити Event Loop-а. Резултати или грешке се враћају назад у Event Loop преко callback-ова.

Кључне компоненте:

  • Event Loop: Главна петља извршавања која обрађује догађаје и позиве функција.
  • Ред callback-ова: Ред за callback-ове завршених асинхроних операција.
  • Пул нитова: Посебне нитове за извршавање блокирајућих задатака.
  • 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 извршава у једном току.