Page 19 -
P. 19
그림 1-7 이벤트 루프 2
호출 스택 백그라운드
1
4. 호출 스택 실행이
끝나 비워지면 노드 시작하기
5. 이벤트 루프가
태스크 큐의 콜백을
호출 스택으로 올림
run 태스크 큐
그림 1-8은 이벤트 루프가 run 콜백을 태스크 큐에서 꺼내 호출 스택으로 올린 상황입니다. 호출
스택으로 올려진 run은 실행되고, 실행 완료 후 호출 스택에서 비워집니다. 이벤트 루프는 태스크
큐에 콜백 함수가 들어올 때까지 계속 대기합니다.
그림 1-8 이벤트 루프 3
호출 스택 백그라운드
6. run이 호출 스택에서
실행되고 비워짐
run()
7. 이벤트 루프는
태스크 큐에 콜백이
들어올 때까지 대기
태스크 큐
만약 호출 스택에 함수들이 너무 많이 들어 있으면 3초가 지난 후에도 run 함수가 실행되지 않을
수 있습니다. 이벤트 루프는 호출 스택이 비어 있을 때만 태스크 큐에 있는 run 함수를 호출 스택
으로 가져오니까요. 이것이 setTimeout의 시간이 정확하지 않을 수도 있는 이유입니다.
1.1.4 논 블로킹 I/O
이벤트 루프를 잘 활용하면 오래 걸리는 작업을 효율적으로 처리할 수 있습니다. 작업에는 두 가
지 종류가 있는데, 동시에 실행될 수 있는 작업과 동시에 실행될 수 없는 작업입니다. 기본적으로
31
node_06.indd 31 2020-07-14 오전 11:01:52