2008-09-06 16 views

उत्तर

28

गणना की गति के मामले में, नहीं। वास्तव में धागे के प्रबंधन के ऊपरी हिस्से के कारण चीजें धीमी हो जाएंगी।

प्रतिक्रिया के संदर्भ में, हां। उदाहरण के लिए आप एक आईओ ऑपरेशन पर एक थ्रेड इंतजार कर सकते हैं और एक ही समय में एक और जीयूआई चला सकते हैं।

+8

अकादमिक अर्थ में आप बिल्कुल सही हैं। हालांकि, पृथ्वी पर कोई भी कार्यक्रम 100% सीपीयू-वर्क नहीं है जिसका अर्थ है, कई थ्रेडों का सकारात्मक प्रभाव हो सकता है, भले ही केवल एक कंप्यूटिंग इकाई –

+2

क्या यह उत्तर अधिक विस्तृत हो सकता है? उदाहरण के लिए मल्टीप्रोसेसरों की तुलना में मल्टीथ्रेडिंग के लाभ में क्या लाभ है? – starcorn

1
उपलब्ध CPUs की संख्या की परवाह किए बिना

, आप पूर्वक्रमिक बहुविध और/या अतुल्यकालिक घटकों के साथ आवेदन पत्र की आवश्यकता होती है (यानी काफी कुछ भी है कि गणना या लगातार आई/ओ प्रसंस्करण की एक गैर तुच्छ राशि के साथ एक संवेदनशील जीयूआई को जोड़ती है) है, मल्टीथ्रेडिंग विकल्प से काफी बेहतर प्रदर्शन करता है, जो प्रत्येक एप्लिकेशन के लिए एकाधिक प्रक्रियाओं का उपयोग करना है।

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

इन मुद्दों की काफी संक्षिप्त चर्चा के लिए this Wikipedia article on computer multitasking देखें।

9

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

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

एकाधिक धागे के साथ काम करना आपके व्यापार तर्क को भी सरल बना सकता है, क्योंकि आपको इस बात पर इतना ध्यान देना नहीं पड़ता कि विभिन्न स्वतंत्र कार्यों को कैसे अंतःस्थापित करने की आवश्यकता है। यदि ऑपरेटिंग सिस्टम का शेड्यूलिंग तर्क आपके से बेहतर है, तो आप वास्तव में बेहतर प्रदर्शन देख सकते हैं।

2

हां, एक ही सीपीयू पर एकाधिक धागे (या प्रक्रियाओं) का उपयोग करने का लाभ है - यदि एक धागा कुछ इंतजार करने में व्यस्त रहता है, तो अन्य उपयोगी काम जारी रख सकते हैं।

हालांकि यह कार्य स्विचिंग के ऊपरी हिस्से से ऑफसेट हो सकता है। आपको पता लगाने के लिए उत्पादन ग्रेड हार्डवेयर पर अपने एप्लिकेशन को बेंचमार्क और/या प्रोफाइल करना होगा।

1

बिल्कुल! यदि आप किसी भी प्रकार का I/O करते हैं, तो मल्टीथ्रेड सिस्टम होने का बहुत फायदा होता है। जबकि एक थ्रेड एक आई/ओ ऑपरेशन (जो अपेक्षाकृत धीमी होती है) के लिए प्रतीक्षा करते हैं, एक और धागा उपयोगी काम कर सकता है।

4

आप एक एकल CPU पर multithreading का उपयोग पर विचार कर सकते

  1. आप नेटवर्क संसाधनों का उपयोग करते हैं
  2. आप उच्च गहन आईओ संचालन करते हैं
  3. आप एक डेटाबेस से डेटा खींच तो
  4. यदि आप संभावित देरी
  5. के साथ अन्य सामान का शोषण करते हैं, तो यदि आप अल्ट्रास्पेड प्रतिक्रिया
  6. के साथ अपना ऐप बनाना चाहते हैं

आप एक ही CPU पर बहु ​​सूत्रण उपयोग नहीं करना चाहिए जब

  1. उच्च गहन आपरेशन जो लगभग 100% CPU उपयोग
  2. करना है आप कैसे धागे और तुल्यकालन
  3. उपयोग करने के लिए निश्चित नहीं हैं
  4. यदि आपका आवेदन कई समांतर प्रक्रियाओं में विभाजित नहीं किया जा सकता है
संबंधित मुद्दे