c# - Is there hard limit to the number of threads that can exist in a .NET process? -
संभव डुप्लिकेट:
क्या हम एक नेट अनुप्रयोग में बना सकते हैं धागे की संख्या पर एक सीमा है?
मैं यह मान रहा हूं कि धागे की संख्या जो कि बनाया जा सकता है, उपलब्ध थ्रॉड्स स्टैक को आवंटित किए जाने की आवश्यकता के कारण उपलब्ध स्मृति की मात्रा के द्वारा सीमित है। अगर मैं गलत हूं कृपया मुझे सही। क्या अन्य कारक हैं जो धागे की संख्या को सीमित करता है? या, क्या कोई विशिष्ट संख्या तक सीमित थ्रेड्स की संख्या है?
मैं कैसे (मोटे तौर पर) एक मशीन पर निर्मित अधिकतम धागे की गणना कर सकता हूँ, अगर मैं मशीन विनिर्देशों को जानता हूं?
हमेशा की तरह, रेमंड चेन का जवाब है। नोट करें कि उनका परीक्षण अप्रबंधित कोड का उपयोग कर चलाया गया है। मेरा अनुमान है कि एनएटी ढांचे में कुछ भी नहीं है जो वास्तव में प्रति प्रक्रिया के धागे की संख्या को सीमित करता है और सीमा ओ / एस द्वारा लागू की जाएगी अगर यह वास्तव में मामला है तो उसका परीक्षण अभी भी मान्य है।
इसके अलावा, मुझे यकीन नहीं है कि यह 32-बिट और 64-बिट मशीनों के बीच अलग है, मैं सोचता हूं कि उसके परिणाम रैम आकार पर निर्भर हैं और सीपीयू की संख्या के साथ 32 बिट / 64 बिट सीपीयू जो सभी ने कहा, ऐसा लगता है कि वह 13000 धागे तैयार करने में सक्षम थे।
13k धागा चल रहा है के साथ बड़ा मुद्दा यह है कि खर्च किया गया समय सभी उपलब्ध सीपीयू को खाने के लिए निश्चित है और आपको काम नहीं करने की संभावना हो रही है।
यदि आप जिस ऐप्लिकेशन को देख रहे हैं, बहुत सारे थ्रेड्स बना रहे हैं जो गहन कार्य कर रहे हैं, हो सकता है कि आप प्रसंस्करण स्विचन की मात्रा के साथ समस्याओं में चलने के लिए एक प्रोसेस लटका न सकें जगह लेना। स्पष्ट रूप से एक बहु-थ्रेडेड अनुप्रयोग में सबसे आम समस्या एक संसाधन डेडलॉक है, लेकिन उस परिदृश्य के निवारण के लिए कई उपकरण उपलब्ध हैं।
यह निर्धारित करने के लिए कि क्या वास्तव में आप चल रहे हैं में
Comments
Post a Comment