본문 바로가기

JavaScript

JavaScript의 메모리 구조

JavaScript는 single thread기반인데 어떻게 비동기를 구현할까?

 

JavaScript Engine의 구조:

이 RuntimeEngine 엔진은 Heap(메모리 관리)과 Call Stack(실행할 task 관리)으로 구분된다.

Thread는 Call Stack 하나만 담당한다. -> Single Thread로 동작한다.

 

그리고 비동기 처리를 위해 브라우저나 런타임 환경에서 Web API, Event Loop, Callback Queue를 지원해준다.

 

Web API : 웹 브라우저에서 제공 하는 기능들. 이러한 요청들의 처리는 JavaScript 엔진의 Thread와는 다른 Thread에서 이루어진다.호출만 담당.

Call Stack에서 비동기 방식으로 처리되는 함수가 실행되면 Js엔진은 web API를 통해 브라우저에게 작업을 요청하면서 비동기함수와 그의 콜백함수를 전달, 브라우저는 이 비동기 함수의 작업을 별도의 Thread에 위임. 

Web APIs가 실행되고 그것의 콜백함수는 Callback Queue에 밀어넣는다.

 

Event Loop는 Call Stack에 Main Context가 아닌 다른 함수가 있는지 없는지 계속 확인한다.

없으면 Callback Queue에 있는 콜백함수를 Call Stack에 옮겨서 실행한다.

Event Loop로 JavaScript의 동시성을 지원하면서 단일 스레드를 보장 하는 것이다.

'JavaScript' 카테고리의 다른 글

JavaScript 기본 - 응용 개념 정리  (0) 2024.01.31
JavaScript 기본 다시보기  (0) 2024.01.31
null병합연산자 ??  (0) 2023.11.22