ฉันไม่ใช่โปรแกรมเมอร์ของ Node แต่ฉันสนใจที่การทำงานของIO แบบเธรดเดียวที่ไม่บล็อก หลังจากที่ฉันอ่านบทความการทำความเข้าใจ - the-node-js-event-loopฉันสับสนจริง ๆ มันเป็นตัวอย่างสำหรับแบบจำลอง:
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:เมื่อมีสองคำร้องขอ A (มาก่อน) และ B เนื่องจากมีเพียงเธรดเดียวโปรแกรมฝั่งเซิร์ฟเวอร์จะจัดการคำร้องขอ A ประการแรก: การทำแบบสอบถาม SQL คือคำสั่ง asleep ที่รอ I / O รออยู่ และโปรแกรมติดค้างอยู่ที่การI/Oรอคอยและไม่สามารถรันโค้ดที่แสดงหน้าเว็บด้านหลังได้ โปรแกรมจะสลับเพื่อขอ B ในระหว่างรอหรือไม่ ในความเห็นของฉันเนื่องจากรูปแบบเธรดเดียวไม่มีวิธีสลับหนึ่งคำขอจากอีกแบบ แต่ชื่อของโค้ดตัวอย่างที่บอกว่าทุกอย่างที่วิ่งขนานยกเว้นรหัสของคุณ
(PS ฉันไม่แน่ใจว่าฉันเข้าใจรหัสผิดหรือไม่ตั้งแต่ฉันไม่เคยใช้ Node) วิธีที่โหนดสลับ A เป็น B ระหว่างที่รออยู่ และคุณสามารถอธิบายแบบจำลองเธรดเดียวที่ไม่บล็อก IOของโหนดด้วยวิธีง่ายๆได้หรือไม่? ฉันจะขอบคุณถ้าคุณสามารถช่วยฉัน :)
