एक वास्तविक दुनिया उदाहरण के बारे में बात हो रही है, वहाँ बहु सूत्रण का उपयोग करने के कई कारण हैं, और मैं एक वेब-डेवलपर को किराए पर नहीं लेगा जो इसके बारे में नहीं जानता है। लेकिन अंत में, बहु-थ्रेडिंग का उपयोग करने के कारण मानक- और वेब-विकास के लिए समान हैं: आप या तो कुछ ऐसा चाहते हैं जो पृष्ठभूमि में कुछ समय (उर्फ अवरुद्ध) करे, जिससे उपयोगकर्ता को कुछ प्रतिक्रिया मिल सके, या आप एक ऐसा कार्य है जो इसे कई कोरों पर चलाकर तेज हो सकता है। जब बहु-थ्रेडिंग वास्तव में उपयोगी होती है तो यह एक अलग सवाल है।
स्थिति 1: एक वेब सर्वर कुछ संसाधन की आवश्यकता होती है और कम हिट है/दूसरी
यहाँ बहु सूत्रण (यदि एल्गोरिथ्म के लिए लागू) एक अच्छी बात है, के रूप में निष्क्रिय कोर का उपयोग किया और सूत्रण कर रहे हैं परिणामस्वरूप उपयोगकर्ता को तेज प्रतिक्रिया मिल सकती है।
स्थिति 2: एक वेब सर्वर कुछ संसाधन की आवश्यकता होती है और उच्च हिट है/दूसरी
यहाँ बहु सूत्रण संभव है, लेकिन के रूप में कोर आमतौर पर अन्य अनुरोध के साथ व्यस्त हैं, वहाँ कोई संसाधनों के लिए छोड़ दिया जाता इसे ठीक से इस्तेमाल करें। वास्तव में कई धागे को कार्य फैलाने से प्रतिक्रिया समय पर नकारात्मक प्रभाव पड़ सकता है, क्योंकि कार्य अब खंडित हो गया है और सभी भागों को पूरा करने की आवश्यकता है, लेकिन धागे के साथ निष्पादन का आदेश अनिर्धारित है। तो एक ग्राहक तुरंत प्रतिक्रिया प्राप्त कर सकता है, जबकि अन्य समय-समय पर इंतजार कर सकते हैं जब तक कि उनका अंतिम टुकड़ा अंततः संसाधित न हो जाए।
स्थिति 3: एक वेब सर्वर कुछ संसाधन है कि एक बहुत लंबे समय
यहाँ बहु सूत्रण आवश्यक है लेता है क्या करना है, इसके चारों ओर कोई रास्ता नहीं है। एक ग्राहक प्रतिक्रिया प्राप्त होने तक मिनट या शायद घंटे इंतजार नहीं कर सकता है। इस मामले में एक कॉलबैक सिस्टम आमतौर पर लागू किया जाता है, इसलिए मूल रूप से प्रत्येक कार्य में "एपीआई" होता है जिसे वर्तमान स्थिति के लिए पूछताछ की जा सकती है। अधिकांश ऑनलाइन दुकानें इस के लिए एक उदाहरण हैं: आप कुछ ऑर्डर करते हैं और बाद में आप अपनी ऑर्डर स्थिति पूछ सकते हैं।
थ्रेडिंग का विकल्प प्रक्रिया-फोर्किंग है, क्योंकि अपाचे अपने मानक विन्यास में करता है। लाभ यह है कि भार कोरों में फैला हुआ है (ज्यादातर स्थिति 2 पर लागू होता है), और वेब-कोड को उन सभी कोरों का उपयोग करने के लिए कुछ भी करने की ज़रूरत नहीं है, क्योंकि ओएस स्वचालित रूप से इसे संभालता है। हालांकि यदि आपके पास असंतुलित भार है, तो कुछ कोर निष्क्रिय हो सकते हैं और संसाधनों का उपयोग इष्टतम तरीके से नहीं किया जाता है। यदि यह सही हो जाता है, तो एक थ्रेडिंग स्थिति लगभग हमेशा बेहतर समाधान होती है। लेकिन अपाचे/टॉमकैट मानक कॉन्फ़िगरेशन प्रत्येक अनुरोध के लिए एक थ्रेड को बढ़ाकर, बहुत पुराना थ्रेडिंग मॉडल का उपयोग करता है। प्रभावी रूप से हिट/सेकेंड की एक निश्चित राशि दी जाती है, सीपीयू वास्तव में उन अनुरोधों को संसाधित करने के साथ थ्रेडिंग के साथ अधिक व्यस्त है।
आईएमएचओ, आप पूरी तरह से सही हैं कि वेब ऐप्स में मल्टीथ्रेडिंग की मुख्य भूमिका एक साथ कई स्वतंत्र अनुरोधों को संभालने के लिए है, और इसलिए सर्वर को उत्तरदायी बनाते हैं। – Ingo
उदाहरण के तौर पर, आपके पास एक उपयोगकर्ता पंजीकरण पृष्ठ है और आपको पंजीकरण के संबंध में उस उपयोगकर्ता ईमेल अधिसूचना को भेजने की आवश्यकता है। इस मामले में हम अलग थ्रेड में ईमेल भेजकर मल्टीथ्रेडिंग का उपयोग कर सकते हैं। – Foolish
मैं xmls –