मैं एक नोड प्रोग्रामर नहीं हूं, लेकिन मैं इस बात में दिलचस्पी रखता हूं कि सिंगल थ्रेडेड नॉन ब्लॉकिंग आईओ मॉडल कैसे काम करता है। जब मैंने लेख को समझने के लिए नोड-जेएस-ईवेंट-लूप पढ़ा , तो मैं वास्तव में इसके बारे में उलझन में हूं। इसने मॉडल के लिए एक उदाहरण दिया:
c.query(
'SELECT SLEEP(20);',
function (err, results, fields) {
if (err) {
throw err;
}
res.writeHead(200, {'Content-Type': 'text/html'});
res.end('<html><head><title>Hello</title></head><body><h1>Return from async DB query</h1></body></html>');
c.end();
}
);
Que: जब दो अनुरोध ए (पहले आते हैं) और बी होते हैं क्योंकि केवल एक ही धागा होता है, तो सर्वर-साइड प्रोग्राम अनुरोध को संभाल लेगा। सबसे पहले: SQL क्वेरी करना सोते समय I / O प्रतीक्षा के लिए स्टेटमेंट है। और प्रोग्राम I/O
प्रतीक्षा में अटका हुआ है , और उस कोड को निष्पादित नहीं कर सकता है जो वेब पेज को पीछे छोड़ता है। क्या प्रतीक्षा के दौरान प्रोग्राम बी से अनुरोध करने के लिए स्विच करेगा? मेरी राय में, सिंगल थ्रेड मॉडल के कारण, एक अनुरोध को दूसरे से स्विच करने का कोई तरीका नहीं है। लेकिन उदाहरण कोड का शीर्षक कहता है कि आपके कोड को छोड़कर सब कुछ समानांतर में चलता है ।
(PS मुझे यकीन नहीं है कि मैं कोड को गलत समझ रहा हूं या नहीं, क्योंकि मैंने कभी नोड का उपयोग नहीं किया है।) प्रतीक्षा के दौरान नोड कैसे ए से बी पर स्विच करता है? और क्या आप सरल तरीके से नोड के एकल थ्रेडेड गैर अवरुद्ध IO मॉडल की व्याख्या कर सकते हैं ? अगर आप मेरी मदद कर सकते हैं तो मैं इसकी सराहना करूंगा। :)