2011-01-05 11 views
5

मेरे पास दो नोब प्रश्न हैं:क्या होता है यदि एक थ्रेड किसी प्रक्रिया में दुर्घटनाग्रस्त हो जाता है?

1) क्यों नोड.जेएस एक धागे में चल रहा है? क्यों यह सिर्फ प्रक्रिया का उपयोग नहीं करता है? या प्रक्रिया के बजाए इसे थ्रेड में चलाने के क्या फायदे हैं?

2) यदि प्रक्रिया में कोई थ्रेड क्रैश हो जाता है तो क्या होता है (मुझे पता है कि, अन-हैंडल अपवाद प्रक्रिया से बाहर निकलने का कारण बनता है), लेकिन अगर यह ठीक से पकड़ा जाता है तो क्या होता है? या फ़्लोटिंग पॉइंट अपवाद जैसे अपवादों के साथ। प्रक्रिया भी दुर्घटनाग्रस्त हो जाएगी?

उत्तर

3

मुझे लगता है कि आप इस मामले में "सिंगल थ्रेडेड" के बारे में थोड़ा उलझन में हैं। Node.js स्वयं को असीमित तरीके से कॉल अवरुद्ध करने के लिए पृष्ठभूमि में एकाधिक धागे का उपयोग करता है।

नोड.जेएस कोर, जावास्क्रिप्ट इंजन, एकल थ्रेडेड है। बहु थ्रेडिंग की कमी और इवेंट लूप की उपलब्धता प्रोग्रामिंग को बहुत आसान बनाती है। संक्षेप में, आपको उन सभी समवर्ती मुद्दों से निपटने की ज़रूरत नहीं है जो बहु थ्रेडिंग इसके साथ लाता है आपका कोड इस तरह से एक बहुत अधिक निर्धारक है।

यदि थ्रेड क्रैश हो जाता है तो यह पूरी तरह से अप्रासंगिक है कि यह केवल एक या एक था, यदि कोड सबसे अच्छी चीज को क्रैश करता है जिसके लिए आप उम्मीद कर सकते हैं कि प्रोग्राम इसके साथ मर जाता है, तो प्रोग्राम करने से कहीं ज्यादा परेशानी नहीं होगी आंशिक रूप से दूषित राज्य के साथ चलने के लिए जारी है। कल्पना करें कि डिस्क को डेटा सहेजने के लिए क्रैश जिम्मेदार था, और अब आप प्रोग्राम को फिर से सहेजने के बिना चलते रहेंगे।

0
  1. node.js को बहुत हल्का होने के लिए डिज़ाइन किया गया है, और केवल आवश्यकता होने पर ही बुलाया जाता है। तो प्रत्येक थ्रेड एक अनुरोध को संभालता है तो बाहर निकलता है। यदि आप कॉल/mypage कहते हैं, तो node.js अनुरोध संसाधित करेगा और फिर समाप्त हो जाएगा। यह एक छोटे पदचिह्न
  2. रखते हुए बेहतर प्रदर्शन में परिणाम देता है यदि कोई अपवाद है, और इसे ठीक तरह से संभाला जाता है, तो यह आपके द्वारा परिभाषित किए गए अनुसार एक त्रुटि फेंक देगा। जावास्क्रिप्ट सभी या कुछ भी भाषा नहीं है। कोई भी त्रुटि जावास्क्रिप्ट को त्रुटि और क्रैश फेंकने का कारण बनती है, यही कारण है कि आपको यह सुनिश्चित करने की आवश्यकता है कि आप सभी संभावित त्रुटियों को संभाल लें।
0

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

इस तरह, आपके पास नई प्रक्रियाओं को शुरू करने के अलावा समानांतर में अपने प्रोग्राम के टुकड़े चलाने की संभावना नहीं है। एक ही प्रक्रिया में एकाधिक धागे एक ही स्मृति साझा करते हैं, जबकि प्रक्रियाएं नहीं होती हैं। जब आपको प्रक्रियाओं के बीच जानकारी साझा करने की आवश्यकता होती है, तो आपको संदेश पासिंग का उपयोग करना होगा।

संदेश पास करने का नुकसान यह है कि यह स्मृति के माध्यम से जानकारी साझा करने से धीमा है। इसका फायदा यह है कि आपको अपनी याददाश्त में वस्तुओं की परिवर्तनीय स्थिति के बारे में तर्क नहीं करना है और यह सुनिश्चित करना है कि वे वस्तुएं असंगत न हों।

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

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