본문 바로가기
Web/backend

Node.js event-driven

by yongmin.Lee 2020. 11. 8.

call stack

- 자바스크립트는 싱글 스레드 프로그래밍 언어이므로, 단일 호출 스택이 존재한다.

- 코드가 실행되면 자바스크립트 엔진은 해당 코드를 실행하는데 필요한 환경정보들을 수집해서 실행 컨텍스트 객체에 저장하고 이를 call stack에 쌓는다.

- 이벤트 기반 자바스크립트 런타임인 node.js 특성상 이벤트리스너로 등록된 콜백함수의 실행컨텍스트가 언제 호출스택에 들어가는지 파악하기 위해서는 이벤트루프, 태스크 큐, 백그라운드를 알아야 한다.

이벤트루프

- 이벤트 루프는 항상 대기하고 있다가 호출 스택이 비워지면 태스크 큐 또는 마이크로테스크 큐에서 콜백함수를 하나씩 호출 스택으로 밀어 올린다.

- 태스크큐에 있는 콜백 함수들을 호출스택으로 넘기는 순서는 정해진 규칙(큐별 우선순위가 다름)에 따라 결정.

- 노드가 종료될 때까지 이벤트 처리를 위한 작업을 반복적으로 진행

백그라운드

- 타이머, 콜백함수 대기하거나 I/O 작업이 동시에 실행되는 곳

태스크 큐

- 이벤트가 발생하면, 백그라운드에 있는 이벤트리스너의 콜백함수를 태스크큐로 보내진다. 

- 콜백은 완료된 순서대로 태스크 큐에서 대기하고 있지만, 작업양에따라 순서가 바뀌기도한다.

- 태스크 큐 이외의 여러 큐가 존재

'Web > backend' 카테고리의 다른 글

OAuth 2.0  (0) 2022.03.16
쿠키, 세션, 캐시  (0) 2020.11.07
HTTP vs HTTPS  (0) 2020.11.07
MVC 패턴  (0) 2020.10.30
express (2) : 요청과 응답, 쿠키와 세션, REST API와 라우팅  (0) 2020.10.24