2009-07-08 25 views
7

मैं हमेशा थ्रेड अवधारणाओं के बारे में उलझन में हूं। मुझे अब तक एक वास्तविक वातावरण में उनका उपयोग करने का मौका नहीं है। अगर कोई मेरे लिए धागे समझा सकता है तो यह सहायक होगा।धागे क्या हैं (एक धागा क्या है)?

+1

यह प्रश्न उत्तर देने के लिए बहुत व्यापक है। इसके अलावा, अगर आपको धागे का उपयोग करने की आवश्यकता नहीं है, तो नहीं। गलत काम करना बहुत आसान है। –

+4

यह मेरे लिए एक बिल्कुल वैध सवाल प्रतीत होता है जो कई लोगों की मदद कर सकता है। –

+0

@ जॉन सैंडर्स यह एक बिल्कुल वैध सवाल है। एसए पर हर सवाल पर आईटी और प्रोग्रामिंग की अस्पष्ट, गूढ़ गहराई में प्रवेश करने की जरूरत नहीं है। इसे रोको – Seph

उत्तर

7

एक साधारण स्पष्टीकरण यह होगा कि आपके पास नौकरी है, और आपको नौकरी करने के लिए एक व्यक्ति मिल जाता है।

यह एकल व्यक्ति कंप्यूटर में थ्रेड के समान है।

एक व्यक्ति एक समय में एक काम कर सकता है, इसलिए नौकरी करने के लिए, वह नौकरी के कार्यों, एक समय में एक कार्य, एक समय में प्रत्येक कार्य पर एक ऑपरेशन के माध्यम से आगे बढ़ता है।

नौकरी की गति बढ़ाने के लिए, आप अधिक लोगों को एक ही नौकरी में डाल सकते हैं। उदाहरण के लिए, मान लीजिए कि आपको घर पेंट करने की ज़रूरत है। आप ऐसा करने के लिए 4 लोगों को किराए पर लेते हैं।

ये 4 लोग 4 धागे के समान हो सकते हैं जिसमें वे एक ही संसाधन (उसी घर, पेंट की एक ही बाल्टी) के साथ काम करते हैं और वे काम को विभाजित कर सकते हैं।

एक प्रक्रिया उस घर के चित्रकला के काम के समान होगी।

यह सरल स्पष्टीकरण कुछ हद तक टूट जाता है जब मशीनों की बात आती है जिसमें पर्याप्त थ्रेड एक साथ चलाने के लिए पर्याप्त CPU कोर नहीं होते हैं, लेकिन मैं इसे यहां अनदेखा कर रहा हूं।

+0

सरल और समझने में आसान। –

0

वहाँ विकिपीडिया पर एक अच्छी पृष्ठ है: http://en.wikipedia.org/wiki/Thread_%28computer_science%29

संक्षिप्त सारांश: एक धागा एक प्रकाश प्रक्रिया है

आप धागे का उपयोग करते हैं, प्रत्येक थ्रेड के व्यवहार के लिए और विशेष रूप से आपसी ressources

पर ध्यान देना
2

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

यह ध्यान देने योग्य है कि एक थ्रेड एक प्रक्रिया के लिए अलग है। एक महत्वपूर्ण अंतर यह है कि दो धागे एक ही डेटा (ढेर) तक पहुंच सकते हैं जबकि दो प्रक्रियाएं नहीं हो सकती हैं।

एक धागा एक कार्यक्रम के माध्यम से निष्पादन की एक पंक्ति है:

एक और अधिक पूर्ण विवरण के लिए अन्य ऑनलाइन विवरण

wikipedia

2

oversimplifying के जोखिम पर देखते हैं।

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

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

7

कुछ मुझे हर किसी को समझाने के लिए समय नहीं लगा, प्रक्रिया और धागे के बीच का अंतर था। एक बार जब आप समझ जाएंगे, जहां धागे फिट होते हैं तो बहुत समझदारी होती है।

एक ऑपरेटिंग सिस्टम उपयोग करने के लिए एक प्रक्रिया स्मृति देता है। शुरू होने वाली प्रक्रिया में आमतौर पर एक "धागा" चल रहा है।

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

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

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

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