मैं थोड़ा उलझन में हूं कि वास्तव में क्या होता है जब एक आईओ पूरा करने वाला बंदरगाह पूरा हो जाता है।क्या आईओ पूर्णता बंदरगाह पूरा होने से पहले या उसके बाद एक नया धागा उत्पन्न करता है रिपोर्ट करने के लिए कुछ है?
मुझे लगता है कि विन एपीआई एक आईओसीपी कतार तक पहुंच की इजाजत देता है कि किसी भी तरह एक विशिष्ट हैंडल के साथ कॉलबैक संदर्भ कतार (या ढेर) करने में सक्षम है (चलो एक सॉकेट कहें)। जब विंडोज एनआईसी से बाधा उत्पन्न करता है, तो यह किसी बिंदु पर एनआईसी के लिए आईओसीपी कतार में जाता है और पर अपने (आईओसीपी) थ्रेड पूल पर कॉलबैक निष्पादित करता है।
मेरा सवाल यह है कि, थ्रेड पूल से यह थ्रेड प्राप्त होने पर थ्रेड पूल से उत्पन्न होता है, या वास्तव में यह उत्पन्न होता है जब Win API को कॉल किया जाता है, तब तक प्रभावी रूप से प्रतीक्षा स्थिति में थ्रेड होता है आईओसीपी कतार द्वारा जागृत?
संपादित करें:
मैंने पाया इस: "जब भी है कि आपरेशन पूरा करता है, यह है कि मैं/O पूर्णता पोर्ट पर एक पैकेट कतार होगा बंदरगाह तो आगे बढ़ना और धागे में से एक का उपयोग करेगा:। http://msmvps.com/blogs/luisabreu/archive/2009/06/04/multithreading-i-o-and-the-thread-pool.aspx जहां राज्यों है आपके द्वारा निर्दिष्ट कॉलबैक चलाने के लिए पूल का धागा। "
बस स्पष्टीकरण के लिए, यह एक प्रश्न है कि आईओओपी उपयोगकर्ता द्वारा प्रबंधित थ्रेड पूल में लाने के लिए आईओओ घटना अधिसूचनाओं * रिसेप्शन के स्वागत का प्रबंधन कैसे करता है? – WhozCraig
नहीं। यह एक प्रश्न है कि आईओसीपी द्वारा बनाए गए धागे बंदरगाह के कुछ आईओ (इससे पहले कि वे अवरुद्ध हैं) से पहले बनाए गए हैं, या जब पोर्ट के पास कुछ आईओ रिपोर्ट करने के लिए धागे बनाए जाते हैं। – kasperhj
यह स्पष्ट नहीं है कि आप किस बारे में बात कर रहे हैं। हस्तक्षेप ड्राइवर द्वारा संभाला जाता है। यह महत्वपूर्ण है कि आपका कोड GetQueuedCompletionStatus() या बाद में CreateThreadPoolIo() का उपयोग करता है या नहीं। पहले मामले में आप टीपी धागा बनाते हैं। आखिरी मामले में विंडोज़ इसे बनाता है जब ओवरलैप I/O पूरा हो जाता है। –