मैंने सी # और जोड़ा।आपके प्रश्न में नेट टैग क्योंकि आप अपने शीर्षक में सी # का उल्लेख करते हैं। यदि यह सटीक नहीं है, तो टैग को हटाने के लिए स्वतंत्र महसूस करें।
मल्टीथ्रेडिंग की विभिन्न शैलियों हैं। उदाहरण के लिए, कॉलबैक फ़ंक्शंस के साथ एसिंक्रोनस ऑपरेशंस हैं। .NET 4 समानांतर लिंक लाइब्रेरी प्रस्तुत करता है। मल्टीथ्रेडिंग की शैली का उपयोग आप करेंगे, या किसी भी का उपयोग करने के लिए, जो आप पूरा करने की कोशिश कर रहे हैं उस पर निर्भर करता है।
समांतर निष्पादन, जैसे कि समानांतर लिंक आमतौर पर करने की कोशिश कर रहा है, कई प्रोसेसर कोरों का निष्पादन उन निर्देशों को निष्पादित करता है जिन्हें एक-दूसरे से डेटा की प्रतीक्षा करने की आवश्यकता नहीं होती है। लिंक के बाहर ऐसे एल्गोरिदम के लिए कई स्रोत हैं, जैसे this। हालांकि, यह संभव है कि समांतर निष्पादन आपके लिए असमर्थ हो या यह आपके आवेदन के अनुरूप नहीं है।
अधिक पारंपरिक मल्टीथ्रेडिंग System.Thread
द्वारा प्रदान की गई .NET लाइब्रेरी (इस मामले में) के भीतर थ्रेडिंग का लाभ लेती है। याद रखें कि धागे पर प्रक्रिया शुरू करने में कुछ ओवरहेड है, इसलिए केवल थ्रेड का उपयोग करें जब ऐसा करने के फायदे इस ओवरहेड से अधिक हो जाएं। आम तौर पर, आप केवल इस प्रकार के सिंगल प्रोसेसर मल्टीथ्रेडिंग का उपयोग करना चाहते हैं जब थ्रेड के नीचे चल रहे कार्य में लंबे अंतराल होंगे जिसमें प्रोसेसर कुछ और कर सकता है। उदाहरण के लिए, हार्ड डिस्क से I/O (और इसके परिणामस्वरूप, एक डेटाबेस सिस्टम से जो एक का उपयोग करता है) मेमोरी एक्सेस की तुलना में तीव्रता के कई आदेश हैं। एक और उदाहरण के रूप में, नेटवर्क का उपयोग भी धीमा हो सकता है। मल्टीथ्रेडिंग इन धीमी (प्रोसेसर की तुलना में) संचालन को पूरा करने के लिए प्रतीक्षा करते समय एक और प्रक्रिया को चलाने की अनुमति दे सकती है।
एक और उदाहरण जब मैंने पारंपरिक मल्टीथ्रेडिंग का उपयोग किया है तो कुछ मूल्यों को कैश करना है जब पहली बार किसी विशेष ASP.NET पृष्ठ को किसी सत्र में एक्सेस किया जाता है। मैं एक थ्रेड को लात मारता हूं ताकि उपयोगकर्ता को पेज के साथ बातचीत करने से पहले कैशिंग को पूरा करने की प्रतीक्षा न करनी पड़े। मैं व्यवहार को भी विनियमित करता हूं जब उपयोगकर्ता दूसरे पृष्ठ का अनुरोध करने से पहले कैशिंग पूर्ण नहीं होता है, ताकि यदि कैशिंग पूर्ण नहीं हो पाती है, तो यह कोई समस्या नहीं है। यह बस कुछ और अनुरोध तेजी से बनाता है जो पहले बहुत धीमी थीं।
मल्टीथ्रेडिंग को आपके आवेदन की रखरखाव के लिए भी लागत पर विचार करें। उदाहरण के लिए, थ्रेडेड अनुप्रयोगों को डीबग करना कठिन हो सकता है।
मुझे उम्मीद है कि यह कम से कम कुछ हद तक आपके प्रश्न का उत्तर देगा।
आप वास्तव में क्या करने की कोशिश कर रहे हैं। हमारे लिए यह बताने में आसान हो सकता है कि धागे आपकी समस्या का समाधान करने में मदद करते हैं या नहीं। अन्यथा यह प्रश्न "वास्तविक प्रश्न के रूप में बंद" के लिए उम्मीदवार की तरह दिख रहा है। –
मुझे अपने अगले मूल्य के लिए मल्टीथ्रेड के उपयोग का अध्ययन करने की आवश्यकता है क्योंकि मेरी टीम के नेता ने यह पूछा था। लेकिन सबसे पहले मैं यह पता लगाने की कोशिश कर रहा हूं कि मुझे धागे का उपयोग करना चाहिए, इसलिए मैंने इस सवाल से पूछा। यह देखने के लिए कि जब अन्य देव "वास्तविक दुनिया अनुप्रयोगों" में धागे का उपयोग करते हैं। –
मुझे संसाधन परिप्रेक्ष्य से बहु-थ्रेडिंग परिदृश्य देखना पसंद है। दूसरे शब्दों में, यूआई (ग्राफिक्स), नेटवर्किंग, डिस्क आईओ, सीपीयू (कोर), रैम इत्यादि। मुझे लगता है कि कम से कम सामान्य अर्थ में बहु-थ्रेडिंग का उपयोग करने का निर्णय लेने में सहायता करता है। महान सवाल बीटीडब्ल्यू। नोब या अन्यथा :-) – bic