먼저 자바는 멀티쓰레드 기반의 언어이다.
여기서 멀티쓰레드란 말 그대로 하나의 프로세스를 위해 일하는 여러개의 쓰레드가 동시다발적으로 일을 하여 효율적인 프로그래밍을 가능하도록 해준다.
다만 내가 지금 쓰고있는 자바스크립트는 싱글 스레드 기반의 언어이다.
싱글 스레드면 동시다발적으로 일을 할 수없는데 브라우저 웹에서 동작하는 방식을보면 비동기적으로 여러 일들이 동시에 수행하는걸 볼 수 있다.
그 이유는 자바스크립트 런타임환경인 브라우저 위에서 자바스크립트 소스코드를 받으면 자바스크립트 엔진이 소스코드를 순차적으로 읽게된다.
여기서 큰 그림으로 정리해보자면 사용자의 정보와 같은 데이터를 저장하는 공간인 Memory Heap
함수를 호출하고 불러오는 즉 함수의 동작 순서를 기억하는 공간인 Call Stack
Call Stack은 LIFO(Last In First Out)로 뜻 그대로 제일 늦게 들어온 아이가 제일 먼저 나간다.
즉 스택에 제일 마지막에 쌓인 함수가 호출되면 스택에서 제일 먼저 빠져나간다.
'WEB' 카테고리의 다른 글
[web] EventLoop Task Queue (0) | 2021.07.01 |
---|---|
[web] SSR(Server Side Rendering) vs CSR(Client Side Rendering) (0) | 2021.04.12 |