Middle+
Чӣ гуна бисёрсоҳавӣ дар Node.js амалӣ мешавад?
sobes.tech AI
Ҷавоб аз AI
Node.js дарсонияти табиӣ якпорчагӣ барои иҷрои код JavaScript-и истифодабаранда. Мулоҳизаҳои бисёрҷониба тавассути Input/Output-и беасос ва Event Loop ба даст меоянд. Модулҳои worker_threads барои иҷрои вазифаҳои вазнин бо бисёрҷониба истифода мешаванд.
Event Loop:
- Механизми асосӣ барои амалиётҳои асинхронӣ.
- Даврии якпорчагӣ, ки callback-ҳоро, ки бо I/O, таймерҳо ва дигар ҳодисаҳои асинхронӣ алоқаманданд, коркард мекунад.
Worker Threads:
- Имкон медиҳанд, ки вазифаҳои вазнин CPU-bound дар параллел иҷро шаванд.
- Ҳар як коргар дар як ҷараёни алоҳидаи V8 JavaScript-ро оғоз мекунад.
- Муносибати байни ҷараёни асосӣ ва коргарон тавассути иваз кардани паёмҳо (postMessage, receiveMessage) сурат мегирад.
Муҳокима:
| Механизм | Нақшаи корӣ | Параллелизм | Идоракунии ҳолатҳо | Истифодаи хотира | Сохторӣ | Беҳтар барои |
|---|---|---|---|---|---|---|
| Event Loop | I/O асинхронӣ | Маҳдудият дар ҳамзамонӣ | Ҳолати умумӣ | Самаранокӣ | Низо | вазифаҳои I/O-баро |
| Worker Threads | ҳисобҳои CPU-bound | Параллелизм | Идоракунии мустақил | Бештар | вазифаҳои CPU-bound |
Маслиҳат барои истифодаи worker_threads:
// main.js
const { Worker, isMainThread, parentPort } = require('worker_threads');
if (isMainThread) {
// Ин ҷараёни асосӣ аст
const worker = new Worker(__filename); // Созда кардани коргар бо истифода аз ҳамин файл
worker.on('message', (msg) => {
console.log(`Паёме аз коргар: ${msg}`);
});
worker.on('error', (err) => {
console.error(err);
});
worker.on('exit', (code) => {
if (code !== 0)
console.error(`Коргар бо коди ${code} ба охир расид`);
});
worker.postMessage('Салом, коргар!'); // Паёмро ба коргар мефиристад
} else {
// Ин ҷараёни коргар
parentPort.on('message', (msg) => {
console.log(`Паёме аз ҷараёни асосӣ: ${msg}`);
parentPort.postMessage('Салом, ҷараёни асосӣ!'); // Паёмро бармегардонад
});
}
Event Loop дар сатҳи Node.js ва libuv идора карда мешавад, дар ҳоле ки worker_threads API-ро барои эҷод ва идора кардани ҷараёнҳо барои иҷрои код JavaScript пешниҳод мекунад.