질문
[질문] 1주차 Day2의 이벤트 루프 58초에서 브라우저나 Node.js에서 이벤트루프를 자체적으로 관리한다고 하셨고 1분 20초에서 이러한 과정들은 멀티쓰레드로 동작한다고 하셨는데 제가 예전에 이해한 것으로 Node.js의 특징중 하나가 싱글쓰레드라고 알고 있는데 해당 부분에 대해서 혼동이 되서 제가 기존에 이해한 것이 잘못된 것인지 아니면 다른 추가 내용을 설명해주시면 감사하겠습니다 (궁금한 부분이 많아 질문을 자주하게되네요)
답변
정확히는 자바스크립트 엔진이 싱글 쓰레드로 동작합니다. 브라우저나 Node.js는 멀티 쓰레드가 맞습니다. 사실 멀티 쓰레드가 아니라면 비동기 로직은 불가능합니다. 브라우저나 Node.js는 멀티 쓰레드로 비동기를 실행시키고 최종적으로 메인 쓰레드인 자바스크립트 엔진으로 실행시킵니다.
→ 추가 질문 : 대부분의 Node.js와 관련한 구글링을 보면 Node.js의 특징에서 싱글쓰레드라는 언급이 자주 나와서 이부분이 계속 혼동되었습니다. 이런 Node.js의 특징에 싱글쓰레드라는 것이 포함되는것도 맞는 얘기인가요?
→ 추가 답변 : 자바스크립트만 놓고 본다면 싱글스레드로 동작하는게 맞고 Web API, Task Queue, Event Loop 덕분에 멀티스레드처럼 보여진다고 정리할 수 있겠네요. 🙂 관점에 따라 둘 다 맞는 말이라 볼 수 있을 것 같습니다.