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.