2012-09-29 7 views
9

सभी साहित्य के बाद मैंने node.js पर पढ़ा है, फिर भी मैं सवाल पर वापस आ गया हूं, क्या node.js स्वयं हुड के नीचे कई धागे का उपयोग करता है? मुझे लगता है कि जवाब हां है क्योंकि अगर हम सरल एसिंच फ़ाइल का उपयोग करते हैं तो उदाहरण के लिए फ़ाइल को पढ़ने के लिए कुछ काम करना पड़ता है, लेकिन यदि नोड का मुख्य ईवेंट लूप इस काम को संसाधित नहीं कर रहा है, तो इसका मतलब यह होना चाहिए कि पॉज़िक्स थ्रेड होना चाहिए कहीं भी चल रहा है जो फ़ाइल पढ़ने का ख्याल रखता है और फिर पूरा होने पर ईवेंट लूप को निष्पादित करने के लिए वापस कॉल करता है। तो जब हम कहते हैं कि Node.js एक थ्रेड में चलता है तो क्या हम वास्तव में मतलब करते हैं कि node.js का इवेंट लूप केवल एक धागा है? या क्या मुझे यहां कुछ याद आ रहा है .....क्या Node.js वास्तव में नीचे कई धागे का उपयोग करता है?

+0

जहां तक ​​मैं इसे समझता हूं I/O पूरा करने वाले बंदरगाहों और अन्य प्लेटफार्मों पर उचित अवधारणा धागे पर भरोसा नहीं करती है, लेकिन ओएस में कुछ और हल्के वजन का निर्माण होता है। लेकिन मुझे कभी यकीन नहीं था कि क्या मैं इसे सही ढंग से समझता हूं ... –

उत्तर

6

node.js पर एक जावास्क्रिप्ट प्रोग्राम के लिए, केवल एक धागा है।

यदि आप तकनीकीताओं की तलाश में हैं, तो node.js अंतर्निहित ऑपरेटिंग सिस्टम की आवश्यकता होने पर एसिंक्रोनस I/O को हल करने के लिए थ्रेड का उपयोग करने के लिए स्वतंत्र है।

महत्वपूर्ण बात यह है कि जावास्क्रिप्ट प्रोग्राम में "केवल एक धागा" अबास्ट्रक्शन को तोड़ना नहीं है। यदि वहां अधिक धागे हैं, तो वे जावास्क्रिप्ट प्रोग्राम में मुख्य धागे के लिए कतार अप कर सकते हैं, वे कभी भी जावास्क्रिप्ट कोड को निष्पादित नहीं कर सकते हैं।

+0

क्या आप "अंतर्निहित ऑपरेटिंग सिस्टम को इसकी आवश्यकता है" के बारे में अधिक जानकारी जानते हैं? –

+2

@GoloRoden अधिकांश ऑपरेटिंग सिस्टम में एसिंक I/O कॉल होते हैं जिन्हें आपको उपयोग करने के लिए कोई थ्रेड बनाने की आवश्यकता नहीं होती है, वे कॉलबैक तंत्र/समापन बंदरगाहों का उपयोग स्वयं करते हैं। उस ने कहा, मुझे याद है कि सोलारिस अपने स्वयं के धागे बनाने के लिए इस्तेमाल करते थे और एसिंक कॉल के अंदर उन्हें "छुपा" सिंक I/O करते थे। बिंदु भी था, कॉलिंग कोड था * कोई विचार नहीं * अगर धागे थे या नहीं। –

+0

ठीक है, इसका मतलब है: यदि ऑपरेटिंग सिस्टम थ्रेड-कम एसिंक I/O Node.js प्रदान करता है तो केवल एक थ्रेड की आवश्यकता होती है - यदि नहीं, तो अधिक थ्रेड आवश्यक हो सकते हैं। सही? –

संबंधित मुद्दे