반응형
1. 자바스크립트와 event loop
- node 를 잘 이해하기 위해서는 자바스크립트의 동시성 모델에 대해 잘 이해해야 한다
- 자바 스크립트의 실행 모델은 event loop, call stack, callback queue 개념으로 이뤄진다
1) event loop, main thread
- 이벤트 루프 모델은 여러 스레드 사용
- 우리가 작성한 js 코드가 실행되는 스레드를 메인 스레드라 부름
- 한 node.js 프로세스에서 메인 스레드는 하나이며, 한 순간에 한줄씩만 실행
- 그외 일(file i/o, network..) 을 하는 워커 스레드는 여럿이 있을 수 있다.
2) call stack
지금 시점까지 불린 함수들의 스텍, 함수가 호출될 때 쌓이고, 리털할 때 빠짐
3) Run to completion
- call back 을 어떤 요인에 의해 실행되며 call stack 이 하나 하나 쌓임
- 이벤트 루프가 다음 콜백을 처리하려면 지금 처리하고 있는 콜백의 실행이 완전히 끝나야 한다
- call stack 이 완전히 빌 때까지 처리한다는것과 의미가 동일함.
- 이런 자바스크립트 실행엔진의 특성을 run to completion 이라 불림
4) callback queue
- queue : 맨처음 들어온게 맨 처음 나가는 자료구조
- 콜백 큐(메시지 큐)는 앞으로 실행할 콜백(함수의 그 인자)들을 쌓아두는 큐이다.
- 콜백은 브라우저나 node 가 어떤 일이 발생하면(event) 메인 스레드에 이를 알려주기 위해 (callback) 사용
- 이벤트는 파일 처리의 완료, 네트워크 작업의 완료, 타이머 호출 등이 잇음
- 콜스택이 빌때까지 기다렸다가 콜스택이 비면, 콜백큐에서 하나씩 꺼내서 이벤트 실행
5) non-blocking I/O & offloading
- 브라우저나 node.js 에서나, web api 혹은 node api 의 동작이 끝나면 callback queue 에 등록한다.
- 브라우저나 node가 요청받은 일을 하고 있는 동안 메인 스레드와 이벤트 루프는 영향을 받지 않고 계속 실행된다
- 이런 현상을 offloading 이라 하며, node 서버의 메인 스레드가 하나임에도 불구하고 빠르게 동작할 수 있는 이유
- 메인 스레드가 오래 걸리는 일을 기다리지 않기 때문에..
6) event loop
- callback queue 에서 콜백을 꺼내고(없다면 생길 때까지 기다리고)
- 그 콜백의 처리가 끝날 때까지 실행하고
- 이를 반복한다
반응형
'언어 > Java Script' 카테고리의 다른 글
자바스크립트 기초 이론 - 패캠 node.js 바탕 기본 3 (0) | 2021.08.01 |
---|---|
자바스크립트 기초 이론 - 패캠 node.js 바탕 기본 2 (0) | 2021.08.01 |
[JavaScript - jQuery] value 값으로 select 박스 option 선택하기 + Syntax error, unrecognized expression 에러 (0) | 2020.12.15 |
[Java Script] input 입력 값 자동으로 더하는 법 (0) | 2020.12.10 |
[JAVA Script] console.log( ) 와 document.write( ) 차이점 (0) | 2020.11.26 |