कितना आपको धागे पर लागू करने के लिए की जरूरत है? यदि कोड जारी रखने से पहले आपको लूप में शुरू होने वाले सभी कामों की आवश्यकता है, लेकिन आपको लूप के भीतर काम के आदेश की परवाह नहीं है, तो कॉलिंग का जवाब उत्तर है। Kevin Kenny's answer, पर अधिक जानकारी जोड़ने के लिए आपको लूप के बाहर शामिल होना चाहिए। इसका मतलब है आप एक संग्रह की आवश्यकता होगी धागे आप शुरू के लिए संदर्भ धारण करने के लिए:
// Start all of the threads.
List<Thread> startedThreads = new List<Thread>();
foreach (...) {
Thread thread = new Thread(new ThreadStart(MyMethod));
thread.Start();
startedThreads.Add(thread);
}
// Wait for all of the threads to finish.
foreach (Thread thread in startedThreads) {
thread.Join();
}
इसके विपरीत, यदि आप पाश अंदर से जुड़ें कहा जाता है, परिणाम मूल रूप से एक ही होना के रूप में बिल्कुल भी धागे का उपयोग नहीं होगा। लूप बॉडी का प्रत्येक पुनरावृत्ति थ्रेड बनायेगा और शुरू करेगा लेकिन फिर तुरंत इसमें शामिल होगा और इसे समाप्त करने की प्रतीक्षा करेगा।
यदि व्यक्तिगत धागे कुछ परिणाम उत्पन्न करते हैं (उदाहरण के लिए लॉग में एक संदेश लिखें) तो संदेश अभी भी आदेश से बाहर दिखाई दे सकते हैं क्योंकि धागे के बीच कोई समन्वय नहीं है। मॉनिटर के साथ समन्वय करके धागे को अपने परिणामों को आउटपुट करना संभव है।
स्रोत
2008-08-10 08:37:28