क्या यह केवल इसलिए है क्योंकि उन्हें रजिस्टरों के लिए केवल एक स्टैक और स्टोरेज की आवश्यकता होती है ताकि वे बनाने के लिए सस्ते हों?
क्या तथ्य यह है कि धागे सामान्य डेटा साझा कर सकते हैं, यानी उन्हें यहां इंटरप्रोसेस संचार एक कारक का उपयोग करने की आवश्यकता नहीं है? क्या इससे सुरक्षा की आवश्यकता कम होगी ?
या क्या थ्रेड्स मल्टीप्रोसेसरों का प्रक्रियाओं से बेहतर लाभ उठाते हैं?
4 जवाब
अगर हम भारी वजन वाले धागे (उदाहरण के लिए विंडोज थ्रेड) की बात करते हैं, तो एक प्रक्रिया में धागे होते हैं, और इसमें कम से कम एक धागा (मुख्य धागा) होता है, तो स्पष्ट रूप से यह भारी या कम से कम हल्का नहीं होता :-) (योग है हमेशा >= भाग)
कई "टेबल" हैं जो एक प्रक्रिया में होनी चाहिए (खुली फ़ाइल तालिका, वह तालिका जो दिखाती है कि मेमोरी कैसे मैप की जाती है (एलडीटी, स्थानीय डिस्क्रिप्टर टेबल) ...) यदि आप कोई प्रक्रिया बनाते हैं तो इन सभी तालिकाओं को प्रारंभ किया जाना है। यदि आप एक धागा बनाते हैं तो वे नहीं करते (क्योंकि धागा इसकी प्रक्रिया के लोगों का उपयोग करता है)। और फिर एक नई प्रक्रिया को सभी डीएलएल को फिर से लोड करना होगा, उन्हें रीमैपिंग के लिए जांचें ...
कौन कहता है यह है? कुछ ऑपरेटिंग सिस्टम पर थोड़ा अंतर होता है। क्या आप विंडोज़ के बारे में सोच रहे हैं जहां प्रक्रियाओं की तुलना में धागे बहुत हल्के वजन वाले होते हैं?
मुझे संदेह है कि आप इस स्टैक ओवरफ्लो प्रश्न।
विंडोज़ परिप्रेक्ष्य से, एक प्रक्रिया करने को बनाने में अधिक समय लेती है यदि यह कई डीएलएल लोड कर रही है और आधार पते में विरोध के कारण स्मृति में उन्हें चारों ओर ले जा रही है। फिर डेविड हेफर्नन के उत्तर के लिंक में सूचीबद्ध अन्य सभी कारणों को देखें।
प्रक्रिया स्विच को सीएस/डीएस रजिस्टरों में परिवर्तन की आवश्यकता है। इन रजिस्टरों के मूल्य में परिवर्तन के लिए वैश्विक डिस्क्रिप्टर तालिका से एक नया डिस्क्रिप्टर लाने की आवश्यकता होती है जो वास्तव में सीपीयू समय के मामले में महंगी प्रक्रिया है।
संबंधित सवाल
नए सवाल
multithreading
बहु-थ्रेडिंग के बारे में प्रश्नों के लिए, निष्पादन की कई समवर्ती धाराओं (आमतौर पर थ्रेड्स के रूप में संदर्भित) का उपयोग करके कंप्यूटर या प्रोग्राम को समवर्ती या अतुल्यकालिक रूप से कार्य करने की क्षमता।