이벤트 루프
여러 비동기 작업을 관리하기 위한 구현체로 비동기 작업들을 모아서 관리하고 순서대로 실행할 수 있게 해주는 도구이다.
이벤트 루프의 페이즈
- Timer Phase: 말 그대로 setTimeout이나 setInterval과 같은 함수가 만들어 내는 타이머들을 다룬다.
- Pending Callbacks Phase: pending_queue에 담기는 콜백들을 관리한다. 이 큐에 담기는 콜백들은 이전 이벤트 루프 반복에서 수행되지 못했던 I/O 콜백들이다.
- Idle, Prepare Phase: Node.js의 내부적인 관리를 위한 페이즈로 자바스크립트를 실행하지 않는다.
- Poll Phase: 새로운 I/O 이벤트를 다루며 watcher_queue의 콜백들을 실행한다. watcher_queue에는 I/O에 대한 거의 모든 콜백들이 담긴다. 쉽게 말하면 setTimeout, setImmediate, close 콜백 등을 제외한 모든 콜백이 여기서 실행된다고 생각하면 된다.
- Check Phase: 오직 setImmediate의 콜백만을 위한 페이즈다.
- Close Callbacks Phase: socket.on('close', () => {});과 같은 close 이벤트 타입의 핸들러를 처리하는 페이즈다.
이벤트 루프를 생성하고 이벤트 루프 밖에서 코드를 다 실행 한 다음에 이벤트 루프로 진입한다.
이벤트 루프는 관리자다. 각각의 단계를 순회하면서 효율적으로 처리될 수 있게 관리 해주는 역할.
'오늘 뭐했냐 > 개발에 대한 주저리' 카테고리의 다른 글
23.10.14 프로토타입 (0) | 2023.10.16 |
---|---|
23.10.13 태스크 큐 (0) | 2023.10.16 |
23.10.11 Node.js에서 비동기 처리 (0) | 2023.10.15 |
23.10.10 ci/cd 다시 정리 (0) | 2023.10.14 |
23.10.09 CORS 재정리 (0) | 2023.10.14 |