वर्कर थ्रेड्स आपको कई थ्रेड्स में जावास्क्रिप्ट कोड चलाने की अनुमति देते हैं। वे SharedArrayBuffer के माध्यम से थ्रेड्स के बीच मेमोरी साझा करने के लिए और डेटा प्रोसेसिंग या कम्प्यूटेशन जैसे CPU- बाउंड कार्यों को बंद करने के लिए आदर्श हैं।
बच्चे की प्रक्रिया ] वे अलगाव की आवश्यकता वाले कार्यों के लिए उपयुक्त हैं या गैर-जावास्क्रिप्ट स्क्रिप्ट या बायनेरिज़ के साथ काम करते समय।
] ] बड़े पैमाने पर छवि परिवर्तनों को संभालते समय, जैसे कि आकार बदलना, फसल करना, या फ़िल्टर लागू करना, वर्कर थ्रेड्स इन कार्यों को एक अलग थ्रेड में उतार सकते हैं ताकि मुख्य इवेंट लूप को अवरुद्ध करने से रोका जा सके।उदाहरण:
] फ़ंक्शन रिसाइज़िमेज (ImagePath) { नया वादा लौटाएं ((संकल्प, अस्वीकार) => { const कार्यकर्ता = नया कार्यकर्ता ('./ resizeworker.js', {varkdata: imagepath}); कार्यकर्ता। ('संदेश', हल); कार्यकर्ता। ('त्रुटि', अस्वीकार); }); } // उपयोग resizeimage ('image.jpg')। तब () => कंसोल.लॉग ('छवि आकार दिया!')); ]
बड़ी JSON फ़ाइलों को पार्स करना या CSV डेटा को बदलना संसाधन-गहन हो सकता है। वर्कर थ्रेड्स डेटा को chunks में संसाधित कर सकते हैं, यह सुनिश्चित करना कि एप्लिकेशन उत्तरदायी है।
उदाहरण:
]
कॉन्स्ट वर्कर = नया कार्यकर्ता ('./ dataparser.js');
कार्यकर्ता।
कार्यकर्ता.न ('संदेश', (डेटा) => {
कंसोल.लॉग ('पार्सड डेटा:', डेटा);
});
उदाहरण:
const { Worker } = require('worker_threads'); function resizeImage(imagePath) { return new Promise((resolve, reject) => { const worker = new Worker('./resizeWorker.js', { workerData: imagePath }); worker.on('message', resolve); worker.on('error', reject); }); } // Usage resizeImage('image.jpg').then(() => console.log('Image resized!'));उदाहरण:
] Exec ('ls -l', (त्रुटि, stdout, stderr) => { if (त्रुटि) { Console.Error (`त्रुटि: $ {error.message}`); वापस करना; } कंसोल.लॉग (`आउटपुट: \ n $ {stdout}`); }); ] ]
उदाहरण:] const pythonprocess = spawn ('python', ['script.py']); pythonprocess.stdout.on ('डेटा', (डेटा) => { कंसोल.लॉग (`आउटपुट: $ {डेटा}`); });
]
]
उदाहरण:
const { Worker } = require('worker_threads'); const worker = new Worker('./dataParser.js'); worker.postMessage({ filePath: 'largeData.json' }); worker.on('message', (data) => { console.log('Parsed Data:', data); });]
विशेषता
const { Worker } = require('worker_threads'); function calculatePrimes(limit) { return new Promise((resolve, reject) => { const worker = new Worker('./primeWorker.js', { workerData: limit }); worker.on('message', resolve); worker.on('error', reject); }); } // Usage calculatePrimes(100000).then(primes => console.log(primes));
बच्चे की प्रक्रिया
मेमोरी शेयरिंग
const { exec } = require('child_process'); exec('ls -l', (error, stdout, stderr) => { if (error) { console.error(`Error: ${error.message}`); return; } console.log(`Output:\n${stdout}`); });समर्थित नहीं
कार्य अलगाव
साझा वातावरण, कम पृथक
const { spawn } = require('child_process'); const pythonProcess = spawn('python', ['script.py']); pythonProcess.stdout.on('data', (data) => { console.log(`Output: ${data}`); });
उदाहरण ]
सिस्टम-स्तरीय कार्य या बाहरी कोड
const { exec } = require('child_process'); exec('ls -l', (error, stdout, stderr) => { if (error) { console.error(`Error: ${error.message}`); return; } console.log(`Output:\n${stdout}`); });
ओवरहेड
कम (एक ही प्रक्रिया)संचार | संदेश पासिंग के माध्यम से, तेजी से | IPC के माध्यम से, धीमी|
---|---|---|
कोई भी स्क्रिप्टिंग या सिस्टम-स्तरीय भाषा | स्टार्टअप का समय | |
और धीमा | त्रुटि नियंत्रण | कम निहित, प्रक्रिया को क्रैश कर सकते हैं |
] ] ] ] ] | निष्कर्ष | |
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3