यह आपके द्वारा किए जा रहे कार्यों पर निर्भर करता है, लेकिन ज्यादातर मामलों में विकल्प 1 का सर्वश्रेष्ठ प्रदर्शन होगा और साथ काम करना सबसे आसान होगा।
- 100 धागे सभी एक ही कार्य कर रहे हैं:
आप एक अधिक पूरा जवाब मैं निम्नलिखित पता करने की आवश्यकता होगी देने के लिए?
- क्या 100 थ्रेड एक ही डेटा तक पहुंच रहे हैं?
- क्या थ्रेडों द्वारा प्राकृतिक डाउन टाइम होने के लिए किए गए कार्यों (किसी अन्य प्रक्रिया को समाप्त करने या संसाधन उपलब्ध होने का इंतजार कर रहे हैं)?
- क्या थ्रेड द्वारा प्रबंधित किए गए कार्यों को सीमित संसाधन (जैसे हार्ड डिस्क या नेटवर्क कार्ड) तक पहुंचने का प्रयास करने के लिए जा रहे हैं?
- आपके कंप्यूटर एक समय में कितने एक साथ संभाल सकता है (उदाहरण के लिए हाइपर-थ्रेडिंग के साथ 4 कोर प्रोसेसर 8 थ्रेड को संभाल सकता है, हाइपर-थ्रेडिंग के बिना 4 कोर प्रोसेसर 4 थ्रेड को संभाल सकता है)?
- धागे पर कुछ गलत होने पर क्या होता है? प्रक्रिया क्रैश है, धागा फिर से शुरू किया गया है?
यदि धागे सभी एक ही कार्य कर रहे हैं, तो उन्हें एक साथ रखने से अंतिम उपयोगकर्ता और बाद के डेवलपर्स पर आसान हो जाएगा, क्योंकि सबकुछ एक ही स्थान पर है।
यदि थ्रेड सभी एक ही डेटा तक पहुंच रहे हैं तो उन्हें उसी प्रक्रिया में रखते हुए आपको थ्रेड के बीच उस डेटा को साझा करने की अनुमति मिल जाएगी (हालांकि डेटा बदलने पर दौड़ की स्थिति के लिए देखें) और मेमोरी पैर प्रिंट को कम करना। आप एक ही ब्लॉक से डेटा तक पहुंचने के लिए थ्रेड को टीम में सक्षम करने में सक्षम हो सकते हैं, इसलिए सीपीयू पर सब कुछ कैश किया जा सकता है, स्मृति विलंबता के प्रभाव को कम करता है, हालांकि यह ऐसा कुछ नहीं है जिसे मैं कोशिश करने की सिफारिश करता हूं।
चूंकि कई उत्तर आपकी परियोजना को कार्यान्वित करने के बारे में सलाह दे रहे हैं, यह जानकर कि प्रत्येक थ्रेड को सीपीयू का पूरी तरह से उपयोग करने के लिए डिज़ाइन किया गया है या नहीं, या यदि ये पृष्ठभूमि कार्य हैं जो पहले थोड़ी सी काम करते हैं सोने के लिए वापस जाने से हमें आपकी स्थिति के लिए सुझाव सही करने में मदद मिलेगी।
यह जानना कि प्रक्रिया किस हार्डवेयर पर चल रही है, हमें आपकी स्थिति के लिए सुझाव प्रदान करने में मदद मिलेगी।
यदि कोई धागा विफल रहता है, तो क्या होता है? यदि कोई थ्रेड दिन में एक बार विफल रहता है, तो क्या उपयोगकर्ता को हस्तक्षेप करने, प्रक्रिया को रोकने और इसे पुनरारंभ करने की आवश्यकता होती है? यदि ऐसा है तो अन्य धागे पर किए गए किसी भी सहेजे गए काम को खो दिया जाएगा। इस मामले में, प्रत्येक थ्रेड अपनी प्रक्रिया में चलने से आपको असफल प्रक्रिया को खोने का लाभ मिलेगा।
क्रिश्चियन हैटर का विकल्प 3 समझ में आता है, लेकिन सी # के साथ हमेशा प्रासंगिक नहीं होता है।
आप documentation को देखें, तो यह कहा गया है:
एक ऑपरेटिंग सिस्टम threadid एक प्रबंधित धागा करने के लिए कोई निश्चित संबंध नहीं है, क्योंकि एक अप्रबंधित मेजबान प्रबंधित और अप्रबंधित धागे बीच संबंध को नियंत्रित कर सकते हैं। विशेष रूप से, एक परिष्कृत होस्ट सीएलआर होस्टिंग एपीआई का उपयोग उसी ऑपरेटिंग सिस्टम थ्रेड के विरुद्ध कई प्रबंधित धागे को शेड्यूल करने के लिए या विभिन्न ऑपरेटिंग सिस्टम थ्रेड के बीच प्रबंधित थ्रेड को स्थानांतरित करने के लिए कर सकता है।
असल में इसका मतलब है कि नेट फ्रेमवर्क आपके धागे को पूल करेगा यदि ऐसा लगता है कि यह एक अच्छा विचार होगा। यदि आपकी प्रक्रियाएं अधिक धागे का उपयोग कर रही हैं, तो यह अधिक होने की संभावना है, जबकि कुल धागे की संख्या बहु-थ्रेडेड प्रक्रियाओं के बीच शायद समान ही रहेगी। नतीजतन मैं 1 प्रक्रिया, 100 धागे समाधान कम कुल धागे का उपयोग करने के लिए 10 प्रक्रियाओं, 10 धागे प्रत्येक (10 से 40 की तरह कुछ, लेकिन आपको जांचना होगा) की उम्मीद होगी।
कहा जा रहा है कि ढांचा अनुमान लगाएगा, इसलिए कुछ मामलों में थ्रेड पूल बेहतर विकल्प होगा। पहले documentation को पढ़ना सुनिश्चित करें, क्योंकि कुछ ऐसे मामले हैं जहां थ्रेड पूल का उपयोग नहीं किया जाना चाहिए। पूल पर एक त्वरित ट्यूटोरियल MSDN पर पाया जा सकता है। thread भी है जो थ्रेड पूल का उपयोग करने पर रोक लगाता है।
यदि आप अधिक जानकारी प्रदान करते हैं तो मैं एक और सटीक उत्तर देने का प्रयास करूंगा। अन्यथा विकल्प 1 (और संभवतः विकल्प 3) अधिकांश स्थितियों में बेहतर विकल्प हैं।
3. जब तक आप प्रोसेसर के पूरे समूह के साथ क्रे पर नहीं होते हैं, तब तक 100 एक साथ-सक्रिय धागे न बनाएं। –
क्या आपकी प्रक्रियाओं को संवाद करने की आवश्यकता है? – Jimmy
गलत उत्तर के लिए अपील करें (जो हटाया गया है)। मैंने उपर्युक्त परिदृश्य का परीक्षण किया और मैंने पाया कि एकल प्रक्रिया बहु थ्रेडेड एप्लिकेशन वास्तव में बहु प्रक्रिया अनुप्रयोग की तुलना में तेज़ है। खुद को कारण समझने की कोशिश करेंगे। – Jimmy