एक प्रतिनिधि का उपयोग करके मैं किसी भी कार्य को असीमित रूप से कॉल कर सकता हूं। प्रलेखन से मैं समझता हूं कि यह थ्रेडपूल के लिए वर्कटाइम कतार में किया जाता है।एसिंक्रोनस कॉल और एसिंक्रोनस आईओ कॉल के बीच अंतर .net
कोई भी आईओ कार्यों (जैसे सॉकेट, फाइल, वेबपृष्ठ आदि से पढ़ने) के लिए असीमित कॉल कर सकता है। मुझे लगता है (लेकिन मुझे यकीन नहीं है) यह थ्रेडपूल में वर्कटाइम नहीं पैदा करता है। परिणाम प्राप्त होने के बाद ही (या एक त्रुटि), थ्रेडपूल में एक नए धागे से कॉल किया गया कॉलबैक है।
क्या यह धारणा सही है? या एक एसिंक्रोनस आईओ कॉल है, कवर के तहत भी कुछ थ्रेड जो पैदा हुआ है? यदि यह मामला है, तो एसिंक्रोनस कॉल कैसे स्प्रेडिंग थ्रेड (थ्रेडपूल का उपयोग करके) से बेहतर प्रदर्शन कर सकते हैं और ब्लॉक कर सकते हैं?
भी: किसी भी समय कितने एसिंक्रोनस कॉल का सामना किया जा सकता है? थ्रेडपूल का इस्तेमाल होने के मामले में, मुझे लगता है कि आप जितना चाहें उतना अनुमान लगाते हैं। लेकिन आईओ एसिंक्रोनस कॉल के मामले में, क्या कोई सीमा है? और ऐसा है, आप कैसे जानते हैं कि सीमा क्या है?
@ सेर्गे: तो आप कह रहे हैं कि वास्तव में एक अंतर है। फिर कितने आईओ अनुरोध किसी भी समय कमान लंबित हो सकते हैं? मिठाई क्या है? क्या यह आईओ लक्ष्यित या कुछ और पर निर्भर है? एक कैसे जान सकता है? – Toad
सरल उत्तर: यह निर्भर करता है। यदि आप आईओ प्राप्ति बंदरगाहों का उपयोग करते हैं (यह सबसे जटिल लेकिन सबसे शक्तिशाली तकनीक है) ओएस सभी सक्रिय आईओ कार्यों को संभालने के लिए जितना संभव हो उतना धागा बना देगा (आपके हार्डवेयर कॉन्फ़िगरेशन पर निर्भर करता है)। सतर्क IO का उपयोग करने के लिए एक धागा की आवश्यकता है! हर! लंबित आईओ संचालन। यही कारण है कि आईओ कोप्लेक्शन बंदरगाह अधिक प्रभावी और स्केलेबल है: आप संभाल सकते हैं! कई! कम से कम संसाधनों के साथ एक साथ आईओ अनुरोध। मुझे लगता है कि आपको ये सब समझने के लिए जेफरी रिचटर द्वारा "सी/सी ++ के माध्यम से विंडोज़" या "प्रोग्रामिंग सर्वर-साइड एप्लिकेशन" पढ़ना चाहिए। यह बहुत मुश्किल चीजें है! –
@reinier सीमाएं आपके सीपीयू से आपकी विंडोज लाइसेंस कुंजी पर सब कुछ पर आधारित हैं। लेकिन सीमाएं महत्वपूर्ण नहीं हैं - जब तक आप बीसीएल द्वारा प्रदान की गई एसिंक्रोनस विधियों का उपयोग करते हैं, तब तक आप जानते हैं कि यदि आप उदाहरण के मुकाबले बेहतर स्केलेबिलिटी प्राप्त करेंगे। 'QueueUserWorkItem'। – bzlm