मैं Task Parallel Library के बारे में पढ़ रहा था और लेख ने कहा: .NET फ्रेमवर्क 4 मेंक्या .NET 4.0 कार्य हमेशा बहु-थ्रेडेड अनुप्रयोगों के लिए पसंदीदा तरीका होना चाहिए?
, कार्य लेखन के लिए पसंदीदा एपीआई, मल्टी-थ्रेडेड अतुल्यकालिक, और समानांतर कोड
लेकिन यह कर रहे हैं यह भी कहते हैं कि वे दृश्यों के पीछे थ्रेडपूल का उपयोग करते हैं। मुझे यह पता लगाने में कठिनाई हो रही है कि यदि आप थ्रेडपूल का उपयोग करते हैं तो कार्य केवल तभी उपयोग किया जाना चाहिए (और इसलिए "थ्रेड बनाम कार्य" थ्रेडपूल बनाम थ्रेडपूल के बराबर होगा), या यदि माइक्रोसॉफ्ट का उपयोग करने के लिए कार्य करना है "थ्रेड बनाम थ्रेडपूल" दुविधा के निहित विचारों के बिना कहीं भी कई धागे की आवश्यकता होती है।
तो, कार्य किया जाना चाहिए कहीं भी एक से अधिक थ्रेड आवश्यक हैं?
यह मेरी समझ है कि लंबे समय तक चलने वाले कार्यों धागे के लिए सबसे उपयुक्त हैं, जबकि छोटे कार्य थ्रेडपूल के लिए बेहतर हैं। अग्रभूमि बनाम पृष्ठभूमि का मुद्दा भी है। क्या कार्य वास्तव में पता लगाता है कि क्या कार्य पारित किया गया है, या यदि यह अग्रभूमि या पृष्ठभूमि होना चाहिए? मैं नहीं देखता कि यह कैसे हो सकता है। तो यह कैसे पूछ सकता है कि थ्रेडपूल सबसे अच्छा मार्ग है या नहीं? और यदि यह हमेशा थ्रेडपूल का उपयोग करता है, तो क्या थ्रेडपूल उपयुक्त नहीं होने पर कोई थ्रेड का उपयोग जारी रखना चाहिए? – Bob
आप सही हैं, यह नहीं पता था कि कार्य लंबे समय से चल रहा है या नहीं, यह हल करने की समस्या है। जो मैं समझता हूं, रनटाइम यह निर्धारित कर सकता है कि आपकी क्वेरी या फ़ंक्शन भारी गणना या आईओ-बाउंड है, और यह तदनुसार रणनीतियों का चयन करता है। – cunningdave
देखें कि कार्य की लंबाई थ्रेडपूल प्रश्न से कैसे संबंधित है। एक थ्रेडपूल का उद्देश्य मनमानी कार्यों के साथ थ्रेड आवंटन का पुन: उपयोग करके धागे बनाने और मारने के ऊपरी हिस्से को कम करना है। लेकिन एक थ्रेडपूल थ्रेड्स का उपयोग करके कार्यान्वित किया जाता है, जो मध्यस्थ द्वारा प्रबंधित किया जाता है। मुझे यकीन नहीं है कि पूल में एक लंबा काम सौंपना वास्तव में एक नुकसान है, शायद यह थ्रेड प्रबंधन को कैसे प्रबंधित करता है। क्यू पर वापस, रनटाइम यह निर्धारित करने के आधार पर एक अधिक परिष्कृत दृष्टिकोण चुन सकता है कि यह सर्वोत्तम रणनीति है। यानी आप PostMessage का उपयोग करके Asynch को एक थ्रेड पर पूरा कर सकते हैं। – cunningdave