@Eric
@ डेरेक, मैं उस परिदृश्य से बिल्कुल सहमत नहीं हूं जिसका उपयोग आप एक उदाहरण के रूप में करते हैं। अगर आपको पता नहीं है कि आपकी मशीन पर क्या चल रहा है और वास्तव में कितने कुल थ्रेड, हैंडल, सीपीयू टाइम, रैम इत्यादि, कि आपका ऐप कुछ निश्चित भार के तहत उपयोग करेगा, तो आप परेशानी में हैं।
क्या आप अपने द्वारा लिखे गए कार्यक्रमों के लिए एकमात्र लक्षित ग्राहक हैं? यदि नहीं, तो आप इसके बारे में निश्चित नहीं हो सकते हैं। जब आप एक प्रोग्राम लिखते हैं तो आपको आम तौर पर कोई जानकारी नहीं है कि क्या यह प्रभावी ढंग से एकल निष्पादित करेगा, या यदि यह एक डीडीओएस हमले से हथियाने वाले वेबसर्वर पर चलाएगा। आप नहीं जानते कि आप कितने CPU समय के लिए जा रहे हैं।
इनपुट के आधार पर आपके प्रोग्राम के व्यवहार में बदलावों को मानते हुए, यह भी जानना दुर्लभ है कि आपका प्रोग्राम कितना मेमोरी या सीपीयू टाइम उपभोग करेगा। निश्चित रूप से, आपके पास इस कार्यक्रम के बारे में एक अच्छा विचार होना चाहिए कि आपका प्रोग्राम कैसा व्यवहार करने जा रहा है, लेकिन अधिकांश कार्यक्रमों का कभी भी विश्लेषण नहीं किया जाता है कि कितनी मेमोरी, कितने हैंडल इत्यादि का उपयोग किया जाएगा, क्योंकि एक पूर्ण विश्लेषण महंगा है। यदि आप रीयल-टाइम सॉफ़्टवेयर नहीं लिख रहे हैं, तो भुगतान प्रयास के लायक नहीं है।
आम तौर पर, यह जानने का दावा करना कि आपका प्रोग्राम कैसा व्यवहार करेगा, दूर तक पहुंचाया जा रहा है, और मशीन के बारे में सबकुछ जानने का दावा लुभावना है।
और ईमानदार होने के लिए, यदि आपको नहीं पता कि आपको किस विधि का उपयोग करना चाहिए: मैनुअल थ्रेड्स, थ्रेड पूल, प्रतिनिधि, और आपके आवेदन की आवश्यकता के अनुसार इसे कैसे कार्यान्वित किया जाए, तो आप परेशानी में हैं।
मैं पूरी तरह से असहमत नहीं हूं, लेकिन मैं वास्तव में नहीं देखता कि यह कैसे प्रासंगिक है। यह साइट यहां विशेष रूप से है क्योंकि प्रोग्रामर के पास हमेशा सभी जवाब नहीं होते हैं।
यदि आपका आवेदन आपके द्वारा उपयोग किए जाने वाले धागे की संख्या को थ्रॉटल करने की आवश्यकता के लिए पर्याप्त जटिल है, तो क्या आप हमेशा फ्रेमवर्क की तुलना में अधिक नियंत्रण नहीं चाहते हैं?
नहीं। अगर मुझे थ्रेड पूल की ज़रूरत है, तो मैं जो भी प्रदान करता हूं उसका उपयोग करूंगा, जब तक कि मुझे लगता है कि यह पर्याप्त नहीं है। मैं बस यह नहीं मानूंगा कि प्रदान की गई थ्रेड पूल मेरी आवश्यकताओं के लिए अपर्याप्त है, इस मामले की पुष्टि किए बिना।
मैं यहां केवल सैद्धांतिक ज्ञान वाले किसी के रूप में नहीं बोल रहा हूं। मैं उच्च वॉल्यूम अनुप्रयोगों को लिखता और बनाए रखता हूं जो मल्टीथ्रेडिंग का भारी उपयोग करते हैं, और मुझे आमतौर पर थ्रेड पूल सही जवाब नहीं मिलता है।
मेरा अधिकांश पेशेवर अनुभव मल्टीथ्रेडिंग और मल्टीप्रोसेसिंग प्रोग्राम के साथ रहा है। मुझे अक्सर अपना खुद का समाधान रोल करने की ज़रूरत है। इसका मतलब यह नहीं है कि थ्रेड पूल उपयोगी नहीं है, या कई मामलों में उपयुक्त है। थ्रेड पूल वर्कर थ्रेड को संभालने के लिए बनाया गया है। ऐसे मामलों में जहां एकाधिक कार्यकर्ता धागे उपयुक्त हैं, प्रदान किया गया थ्रेड पूल आमतौर पर पहला दृष्टिकोण होना चाहिए।