मेरी परियोजनाओं में से एक में जो कि एग्रीगेटर है, मैं वेब से फ़ीड्स, पॉडकास्ट और अन्य पार्स करता हूं।क्या मुझे आईओ-बाउंड ऑपरेशंस के लिए थ्रेडपूल या टास्क समांतर लाइब्रेरी का उपयोग करना चाहिए
यदि मैं अनुक्रमिक दृष्टिकोण का उपयोग करता हूं, तो बड़ी संख्या में संसाधनों को देखते हुए, उन सभी को संसाधित करने में काफी समय लगता है (नेटवर्क समस्याओं और इसी तरह की सामग्री के कारण);
foreach(feed in feeds)
{
read_from_web(feed)
parse(feed)
}
तो मैं संगामिति लागू करना चाहते हैं और अगर मैं मूल रूप से ThreadPools का उपयोग कार्यकर्ता धागे के साथ कार्रवाई करने के लिए चाहिए या सिर्फ TPL पर भरोसा करते हैं यह हल कर पाने के लिए तय नहीं कर सका।
निश्चित रूप से थ्रेडपूल कार्यकर्ता धागे के साथ मेरे लिए नौकरी संभालेगा और मुझे वह उम्मीद मिलेगी जो मैं उम्मीद करता हूं (और बहु-कोर CPU वातावरण में, अन्य कोर भी उपयोग किए जाएंगे)।
लेकिन मैं अभी भी TPL भी विचार करने के लिए यह प्रक्रिया का सुझाव देते है के रूप में चाहते हैं, लेकिन मैं थोड़ा इसके बारे में चिंतित हूँ। सबसे पहले मुझे पता है कि टीपीएल थ्रेडपूल का उपयोग करता है लेकिन निर्णय लेने की अतिरिक्त परत जोड़ता है। मैं ज्यादातर इस शर्त से चिंतित हूं कि जहां एक एकल-कोर वातावरण मौजूद है। यदि मैं गलत नहीं हूं तो टीपीएल बहुत ही कम समय में उपलब्ध सीपीयू-कोर की संख्या के बराबर एक संख्या कार्यकर्ता-थ्रेड के साथ शुरू होता है। मुझे अपने आईओ-बाध्य मामले के लिए अनुक्रमिक दृष्टिकोण के समान परिणाम देने वाले टीपीएल का डर है।
तो आईओ-बाउंड ऑपरेशंस (मेरे मामले में वेब से संसाधन पढ़ने में) के लिए, क्या थ्रेडपूल का उपयोग करना और चीजों को नियंत्रित करना सबसे अच्छा है, या बस टीपीएल पर भरोसा करना बेहतर है? क्या आईपी-बाध्य परिदृश्य में टीपीएल भी इस्तेमाल किया जा सकता है?
अद्यतन: मेरी मुख्य चिंता यह है कि - TPL एक एकल कोर सीपीयू पर्यावरण पर सिर्फ अनुक्रमिक दृष्टिकोण की तरह व्यवहार करेगा या यह अभी भी संगामिति की पेशकश करेगा? मैं पहले से ही Parallel Programming with Microsoft .NET पढ़ रहा हूं और इसलिए book लेकिन इसके लिए सटीक उत्तर नहीं मिला।
नोट: यह मेरे पिछले प्रश्न [Is it possible to use thread-concurrency and parallelism together?] का पुन: phrasing है जो काफी गलत गलत था।
+1 वैज्ञानिक दृष्टिकोण का उपयोग करके अपनी समस्या को हल करने के लिए। अगर मुझे गलत नहीं लगता है, तो उपर्युक्त सभी तकनीकें थ्रेड पूल का उपयोग करती हैं, जो समान परिणामों को बताती है। आम तौर पर मुझे समांतर एक्सटेंशन का उपयोग करना पसंद है क्योंकि वाक्यविन्यास इतना आसान है और मैं आलसी हूं। –
मैंने सूत्रों को थोड़ा सा साफ कर दिया है; https://github.com/raistlinthewiz/concurrency-tests – HuseyinUslu
परीक्षण करने के लिए सभी कार्यों के माध्यम से जाने के लिए धन्यवाद। – GregoryBrad