이벤트 루프(Event Loop)의 원리
Node.js가 어떻게 싱글 스레드(일꾼이 한 명)인데도 여러 작업을 동시에 처리하는지 설명하는 핵심 엔진입니다.
- Call Stack: 당장 실행해야 할 자바스크립트 코드가 쌓이는 곳입니다.
- Background(C++ APIs): 파일 읽기, 타이머, 네트워크 요청 등 시간이 걸리는 무거운 작업을 대신 처리합니다.
- Callback Queue: 무거운 작업이 끝나면 실행할 콜백 함수들이 대기하는 정류장입니다.
- Event Loop: Call Stack이 비어있는지 0.001초마다 감시하다가, 비어있으면 Queue의 콜백을 Stack으로 올려보내 실행시킵니다.
const fs = require("fs");
console.log("A: 시작");
// 시간이 걸리는 파일 읽기 작업 (백그라운드로 위임)
fs.readFile("test.txt", () => {
console.log("C: 파일 읽기 완료! (콜백 큐 -> 이벤트 루프가 호출)");
});
console.log("B: 끝");
// 출력 순서: A -> B -> C