자바스크립트 ) 이벤트루프(Event Loop)

Jeong-Taek·2022년 10월 26일
0

Event Loop란?

Event Loop는 Javascript가 비동기작업을 가능하도록 해주는 것.

비동기작업 처리를 위해서 javascript Engine과 Runtime Enviorment간의 통신을 담당하는 런타임환경 구성요소다.

Javascript로 작성된 애플리케이션은 런타임환경의 멀티쓰레드(Multi Thread)를 활용하여 비동기작업을 수행한다.

JS가 런타임환경의 Multi Thread를 어떻게 활용할 수 잇을까?

런타임환경이 제공하는 API와 Event Loop를 이용해 자바스크립트와 런타임 환경이 서로 통신함으로 비동기작업이 가능해 지는 것.

원리를 살펴보자

Event Loop가 런타임의 Task Queue와 JS의 Call Stack을 감시함.

  1. JS가 런타임환경이 제공하는 비동기 AIP를 호출한다.
  2. 런타임환경은 1번에서 전달받은 콜백함수를 Task Queue에 넣는다.
  3. 비동기 작업이 끝난 이후, Event Loop가 JS의 Call Stack을 감시하다가, Call Stack이 비워졌을 때, Task Queue에 있는 콜백함수를 Call Stack으로 이동시키고 자바스크립트가 callback을 수행한다.

개념

Call Stack

  • 현재 수행중인 함수들의 목록이 들어있음.
  • 이름에서 알 수 있듯 Stack구조로 되어있음.
  • 함수의 호출/작업순서를 저장한다.

Task Queue

  • 수행되어야할 Callback함수들이 들어있다.
  • 실제로 다양한 Task Queue들이 존재한다.
  • Task Queue 종류는 런타임 환경마다 다르다.
  • 각 Task Queue마다 처리되는 방식이 다르다.

0개의 댓글