नहीं! आपने यह गलत नहीं सीखा है कि जावास्क्रिप्ट एक एकल थ्रेडेड भाषा है। यह एक एकल-थ्रेडेड भाषा है, इसमें कोड को निष्पादित करने के लिए एकल मुख्य थ्रेड तक पहुंच होती है। इसलिए जब हम सिंक्रोनस प्रोग्रामिंग के बारे में बात करते हैं, तो हम इस अकेले थ्रेड के बारे में बात कर रहे हैं जो सभी भारी काम करता है और हमारे कोड को निष्पादित करता है।
लेकिन वास्तव में V8 इंजन और Node.js छह अतिरिक्त थ्रेड्स तक पहुंच प्राप्त करने के लिए libuv नामक एक c लाइब्रेरी का उपयोग करते हैं। इनमें से दो का उपयोग कचरा संग्रहण करने के लिए किया जाता है और बाकी का उपयोग एसिंक्रोनस प्रोग्रामिंग जैसे पृष्ठभूमि कार्यों को करने के लिए किया जाता है।
हाँ। जब हम कहते हैं कि कोड एसिंक्रोनस या नॉन-ब्लॉकिंग है तो वास्तव में क्या होता है कि एसिंक कोड कॉलबैक के साथ इन अतिरिक्त थ्रेड्स को पास कर दिया जाता है और मुख्य थ्रेड बाकी कोड को ब्लॉक किए बिना अपना काम करता रहता है।
जब एसिंक कोड समाप्त हो जाता है, तो कॉलबैक फ़ंक्शन को त्रुटि या आवश्यक डेटा के साथ इवेंट कतार में धकेल दिया जाता है। फिर इवेंट लूप इसे कॉल स्टैक और बूम में धकेलता है, हमें अपना परिणाम मिलता है, इसे कुछ कोड के साथ समझें। आइए एफएस मॉड्यूल की रीडफाइल विधि को देखें।
fs.readFile("demo.text","utf8",(err,data)=>{ if(error){ return error } console.log("output",data); })
ऊपर दिए गए कोड में रीडफाइल विधि को बैकग्राउंड थ्रेड्स में पास किया जाता है। रीडिंग पृष्ठभूमि में होती है, और जब वह समाप्त हो जाती है तो कॉलबैक को त्रुटि या डेटा के साथ इवेंट कतार में धकेल दिया जाता है।
एक बार कॉलस्टैक में कॉलबैक निष्पादित हो जाता है और हमारे पास आउटपुट के रूप में या तो त्रुटि या डेटा बचता है।
पढ़ने के लिए धन्यवाद, मुझे आशा है कि मैं जावास्क्रिप्ट में एकल थ्रेडेड साधनों के बारे में समझाने में सक्षम था।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3