이벤트 루프 (Event Loop)

GABMIN KIM·2022년 1월 22일
0

JavaScript

목록 보기
9/17
post-thumbnail

이벤트 루프 (Event Loop)

자바스크립트가 '단일 스레드(sigle thread)' 기반의 언어라는 말은 '자바스크립트 엔진이 단일 호출 스택(Call Stack)을 사용한다'는 관점에서만 사실이다. 실제 자바스크립트가 구동되는 환경(브라우저, Node.js등)에서는 주로 여러 개의 스레드가 사용되며, 이러한 구동 환경이 단일 호출 스택을 사용하는 자바 스크립트 엔진과 상호 연동하기 위해 사용하는 장치가 바로 '이벤트 루프'이다.

자바스크립트 엔진

자바스크립트 엔진은 메모리 할당을 실행하는 Memory Heap과 실행해야할 실행 컨텍스트가 쌓이는 단일 Call Stack으로 구성되어 있다.

Web APIs

Web API 는 브라우저에서 제공하는 API 로, DOM, Ajax, Timeout 등이 있다.
Call Stack에서 실행된 비동기 함수는 Web API를 호출하고, Web API는 콜백함수를 Callback Queue(Task Queue)에 밀어 넣는다. 비동기적인 작업이 끝날때까지 Web APIs가 가지고 있다가 Callback Queue로 보낸다.

Event Loop

Call Stack과 Callback Queue의 상태를 체크하여, Call Stack이 빈 상태가 되면, Callback Queue의 첫번째 콜백을 Call Stack으로 밀어넣는다. 이러한 반복적인 행동을 틱(tick) 이라 부른다.


출처

https://velog.io/@thms200/Event-Loop-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EB%A3%A8%ED%94%84
https://meetup.toast.com/posts/89
https://www.youtube.com/watch?v=wcxWlyps4Vg&t=220s

profile
목표를 성취하는 개발자가 되겠습니다.

0개의 댓글