Sobes.tech
Middle+

Node.js-də çoxmərtəbəli işləmə necə həyata keçirilir?

sobes.tech Süni İntellekt

AI-dan cavab

Node.js təbiətinə görə, istifadəçi JavaScript kodunu icra etmək üçün tək iş parçacığıdır. Çoxlu tapşırıq, qeyri-bloklayan giriş/çıxış və Event Loop vasitəsilə əldə edilir. Çox iş parçacığı ilə ağır tapşırıqların icrası worker_threads modulu ilə həyata keçirilir.

Event Loop:

  • Asinxron əməliyyatlar üçün əsas mexanizm.
  • Giriş/çıxış əməliyyatları, timerlər və digər asinxron hadisələrlə əlaqəli callbackləri işləyən tək iş parçacığı dövrü.

Worker Threads:

  • CPU-bound ağır tapşırıqları paralel şəkildə yerinə yetirməyə imkan verir.
  • Hər işçi öz V8 JavaScript motorunu ayrı bir iş parçacığında işə salır.
  • Əsas iş parçacığı ilə işçilər arasında əlaqə mesajların göndərilməsi (postMessage, receiveMessage) vasitəsilə həyata keçirilir.

Müqayisə:

Mexanizma Məqsəd Paralelizm Vəziyyətin izolasyonu Yaddaş istifadəsi Çətinlik Daha çox hansı üçün uyğundur
Event Loop Asinxron I/O Rəqabət Paylaşılan vəziyyət Effektiv Aşağı I/O-əlaqəli tapşırıqlar
Worker Threads CPU-bound hesablamalar Paralelizm Tam izolasiya Daha çox Orta CPU-bound tapşırıqlar

worker_threads istifadə nümunəsi:

// main.js
const { Worker, isMainThread, parentPort } = require('worker_threads');

if (isMainThread) {
  // Bu əsas iş parçacığıdır
  const worker = new Worker(__filename); // Eyni fayldan işçi yaradılır

  worker.on('message', (msg) => {
    console.log(`İşçidən mesaj: ${msg}`);
  });

  worker.on('error', (err) => {
    console.error(err);
  });

  worker.on('exit', (code) => {
    if (code !== 0)
      console.error(`İşçi ${code} kodu ilə bitdi`);
  });

  worker.postMessage('Salam, işçi!'); // İşçiyə mesaj göndərilir

} else {
  // Bu işçi iş parçacığıdır
  parentPort.on('message', (msg) => {
    console.log(`Əsas iş parçacığından mesaj: ${msg}`);
    parentPort.postMessage('Salam, əsas iş parçacığı!'); // Cavab göndərilir
  });
}

Event Loop Node.js və libuv səviyyəsində idarə olunur, worker_threads isə JavaScript kodunun icrası üçün iş parçacqlarını açıq şəkildə yaratmaq və idarə etmək üçün API təmin edir.