저는 노드 프로그래머는 아니지만 단일 스레드 비 차단 IO 모델의 작동 방식에 관심이 있습니다. understand-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를 처리합니다. 그리고 프로그램이 I/O대기 중에 멈춰 웹 페이지를 렌더링하는 코드를 실행할 수 없습니다. 대기하는 동안 프로그램이 요청 B로 전환됩니까? 내 의견으로는 단일 스레드 모델로 인해 하나의 요청을 다른 요청으로 전환 할 수있는 방법이 없습니다. 그러나 예제 코드의 제목은 코드를 제외한 모든 것이 병렬로 실행 된다고 말합니다 .
(PS 노드를 사용한 적이 없기 때문에 코드를 잘못 이해했는지 확실하지 않습니다.) 대기 중에 노드를 A로 B로 전환하는 방법은 무엇입니까? 그리고 노드 의 단일 스레드 비 차단 IO 모델 을 간단한 방법으로 설명 할 수 있습니까? 도와 주시면 감사하겠습니다. :)
