2010-02-10 13 views

उत्तर

1

अधिकांश प्रणालियों में हल्के वजन धागे आपके द्वारा लाइब्रेरी की मदद से बनाए गए सामान्य थ्रेड होते हैं, जैसे लिनक्स में p_threads।

भारी वजन, कुछ प्रणालियों में, सिस्टम वर्चुअल मेमोरी और एक जटिल संरचना के साथ, प्रक्रिया प्रदर्शन/आंकड़ों के बारे में जानकारी जैसे सिस्टम प्रक्रिया का संदर्भ लें।

अधिक जानकारी के लिए:

http://www.computerworld.com/s/article/66405/Processes_and_Threads

http://msdn.microsoft.com/en-us/library/ms684841(VS.85).aspx

25

यह "संदर्भ" की राशि एक धागा के साथ जुड़े, और फलस्वरूप समय की राशि यह एक "संदर्भ स्विच प्रदर्शन करने के लिए ले जाता है से संबंधित है "।

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

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

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

[कुछ OSes, धागे पता स्थान साझा करने की अनुमति तो धागे कि आम तौर पर काफी भारी हो सकता है, थोड़ा हैं लाइटर]

4

जावा मानक धागे Erlang धागे जो बहुत हल्का spawnable प्रक्रियाएं हैं की तुलना में काफी भारी है। Erlang एक वितरित परिमित राज्य मशीन का प्रदर्शन करता है। हालांकि एक उदाहरण के रूप में, http://kilim.malhar.net/, समेकन के अभिनेता मॉडल के आधार पर एक जावा एक्सटेंशन लाइब्रेरी, जावा में हल्के वजन धागे के लिए एक निर्माण का प्रस्ताव करती है। थ्रेड कार्यान्वयन रन() के बजाय, एक किलिम थ्रेड एक निष्पादन() विधि का उपयोग कर किलिम लाइब्रेरी से लागू होता है। स्पष्ट रूप से यह जावा के रनटाइम को एर्लांग (बाहरी इलाके में स्थानीय वातावरण AFAIK) से बेहतर प्रदर्शन करता है। जावा में वास्तव में 'हरी धागे' नामक मूल भाषा के नमूने में ऐसी चीजें थीं, लेकिन बाद के जावा संस्करणों ने उन्हें देशी धागे

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