यदि आप कोडिंग लिखना चाहते हैं तो आप इन ढांचे में से एक का उपयोग कर सकते हैं।
उदाहरण के लिए, यदि आप a massively multiplayer video game लिखने जा रहे थे, "जावा प्रोग्राम स्थापित करना ... प्रत्येक अनुरोध के लिए थ्रेड भेजने के लिए" शायद एक विकल्प नहीं है; जुगलिंग कि कई धागे आश्चर्यजनक रूप से जटिल हैं, और यह भी खराब प्रदर्शन करता है। इस तथ्य का जिक्र नहीं है कि "केवल धागे का एक गुच्छा" में प्रबंधन उपकरण का एक समूह गुम है जो ट्विस्ट एट। अल। twistd
की तरह है, जो लॉगिंग, डिमोनाइजेशन, स्टार्टअप और शटडाउन को संभालने में काम करता है, और इसी तरह।
या यदि आप build automation system लिखना चाहते हैं, तो asynchronously invoke and control subprocesses की क्षमता उपयोगी होगी। यदि आप एक प्रक्रिया को असंकालिक रूप से उत्पन्न करते हैं, तो आप आसानी से उस प्रक्रिया को मार सकते हैं और इसके बाहर निकलने के साथ गहराई से निपट सकते हैं। यदि आप थ्रेड शुरू करके इसे थ्रेड में अवरुद्ध करते हैं और stopping a thread is inherently unsafe के बाद से इसे आसानी से नहीं रोक सकते हैं।
इवेंटमैचिन और ट्विस्ट दोनों क्लाइंट-साइड प्रोग्राम लिखने के लिए भी उपयोग किए जा सकते हैं; हो सकता है कि आप एक जीयूआई एप्लीकेशन लिख रहे हों जो वेब-आधारित नहीं है, और आप क्लाइंट और सर्वर पर उसी प्रोटोकॉल कार्यान्वयन का उपयोग करना चाहते हैं।
चूंकि आप कई अलग-अलग संदर्भों में एसिंक्रोनस फ्रेमवर्क का उपयोग कर सकते हैं, इसलिए संभव है कि आप इसे वेब एप्लिकेशन में उपयोग करना चाहें क्योंकि आपके पास मौजूदा लाइब्रेरी कोड है, जो आपके एसिंक फ्रेमवर्क का उपयोग करके किसी अन्य एप्लिकेशन के लिए लिखा गया है, जिसे आप चाहते हैं उपयोग करने के लिए। या हो सकता है कि आप अपने वेब एप्लिकेशन कोड को कुछ काल्पनिक भविष्य गैर-वेब एप्लिकेशन में दोबारा उपयोग करने में सक्षम होना चाहें। इस मामले में, यह अपाचे या टॉमकैट या कार्यक्षमता के मामले में जो भी हो, उससे बहुत अलग नहीं है, यह आपको अपने प्रोग्राम को व्यवस्थित करने के लिए एक अधिक सामान्य, पुनः उपयोग करने योग्य तरीका देता है।
मैं खरीदता हूं कि अन्य चीजों के लिए इंतजार करना बहुत समय लगता है, लेकिन ऐसी स्थिति के बारे में जहां एक विशेष पृष्ठ पर बहुत सारी प्रसंस्करण चल रही है और पूरा करने के लिए ~ 500ms लगती है। इसका मतलब है कि इसकी शुरुआत और अंत के बीच हर दूसरे अनुरोध को शुरू होने से पहले 1/2 सेकेंड तक इंतजार करना होगा। मैं एक ऐसी स्क्रिप्ट सोच रहा हूं जो उन चीजों पर बहुत अधिक संख्या में क्रंच कर रही है जो पहले से संकलित फैशन में पुनर्प्राप्त नहीं हैं, यानी बहुत सारे सीपीयू, छोटे I/O। – CCw
@CCw: नहीं, कम से कम नोड के साथ नहीं।जेएस आपने उस प्रक्रिया के लिए एक ईवेंट स्थापित किया है और जब यह किया जाता है तो कॉलबैक प्राप्त करें (संक्षेप में), जबकि शेष स्क्रिप्ट एसिंक और सेवा अनुरोधों में काम करती रहती है। आप जो वर्णन कर रहे हैं वह विपरीत है, 'सिंक' विधि। – stagas
दरअसल, प्रति पृष्ठ 500 एमएमएस गणना करने वाले कुछ को समेकन प्राप्त करने के लिए बहुत से CPUs की आवश्यकता होती है - या इसे पूरा करने के लिए एक ईवेंट के साथ पृष्ठभूमि कार्य के रूप में काटा जाना चाहिए। अधिकांश वेब सिस्टम इस तरह की कई चीजों के साथ चलते हैं - इतने सारे ढेर घूमते हैं, धागे को स्विच किया जा रहा है और कोई भी बहुत कुछ नहीं कर रहा है। असिंक्रोनस प्रोग्रामिंग कोड को बुरी तरह से व्यवहार करने वाली बिट्स को अलग करने के लिए मजबूर करता है, और पूरी तरह से सिस्टम के बारे में सोचता है। – aredridel