오늘 뭐했냐/개발에 대한 주저리

23.10.12 이벤트 루프

스스로에게 2023. 10. 15. 21:25

이벤트 루프

여러 비동기 작업을 관리하기 위한 구현체로 비동기 작업들을 모아서 관리하고 순서대로 실행할 수 있게 해주는 도구이다.

 

이벤트 루프의 페이즈

  1. Timer Phase: 말 그대로 setTimeout이나 setInterval과 같은 함수가 만들어 내는 타이머들을 다룬다.
  2. Pending Callbacks Phase:  pending_queue에 담기는 콜백들을 관리한다. 이 큐에 담기는 콜백들은 이전 이벤트 루프 반복에서 수행되지 못했던 I/O 콜백들이다.
  3. Idle, Prepare Phase: Node.js의 내부적인 관리를 위한 페이즈로 자바스크립트를 실행하지 않는다.
  4. Poll Phase: 새로운 I/O 이벤트를 다루며 watcher_queue의 콜백들을 실행한다. watcher_queue에는 I/O에 대한 거의 모든 콜백들이 담긴다. 쉽게 말하면 setTimeout, setImmediate, close 콜백 등을 제외한 모든 콜백이 여기서 실행된다고 생각하면 된다.
  5. Check Phase: 오직 setImmediate의 콜백만을 위한 페이즈다.
  6. Close Callbacks Phase: socket.on('close', () => {});과 같은 close 이벤트 타입의 핸들러를 처리하는 페이즈다.

 

https://www.korecmblog.com/blog/node-js-event-loop

 

이벤트 루프를 생성하고 이벤트 루프 밖에서 코드를 다 실행 한 다음에 이벤트 루프로 진입한다.

 

이벤트 루프는 관리자다. 각각의 단계를 순회하면서 효율적으로 처리될 수 있게 관리 해주는 역할.

 

참고

'오늘 뭐했냐 > 개발에 대한 주저리' 카테고리의 다른 글

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