Middle — Middle+
როგორ შეიძლება ოპტიმიზირდეს რესურსისადმი მოთხოვნადი მათემატიკური ოპერაციის შესრულება ერთთრიპიან ასინქრონულ გარემოში ისე, რომ ის არ დაბლოკოს მთავარი მოვლენის ციკლი?
sobes.tech AI
პასუხი AI-სგან
ერთობლივი, ასინქრონული გარემოს, მაგალითად Node.js-ის, რესურსის მძიმე გამოთვლები ბლოკავს მთავარი მოვლენის ციკლს, რაც იწვევს სხვა მოთხოვნების დამუშავების დაგვიანებას. ამის თავიდან ასაცილებლად:
- გამოთვლები გადაიტანეთ ცალკე ძაფზე ან პროცესზე, გამოიყენეთ Worker Threads ან child_process.
- გამოიყენეთ ასინქრონული დავალებების რიგები, რომლებიც განაწილებენ დატვირთვას.
Worker Threads-ის მაგალითი:
const { Worker } = require('worker_threads');
function runHeavyComputation(data) {
return new Promise((resolve, reject) => {
const worker = new Worker('./heavyComputation.js', { workerData: data });
worker.on('message', resolve);
worker.on('error', reject);
worker.on('exit', (code) => {
if (code !== 0) reject(new Error(`მუშაკი შეჩერდა კოდით ${code}`));
});
});
}
// მთავარი ფაილში
runHeavyComputation(inputData).then(result => {
console.log('შედეგი:', result);
});
ამ გზით, მთავარი მოვლენის ციკლი თავისუფალია სხვა დავალებების დამუშავებისთვის.