이벤트 루프

이전에 JS의 이벤트 루프에 대해 정리해봤다. 이번에는 조금 더 깊게 공부해보자. JS는 싱글스레드 언어싱글 스레드는 한 번에 하나의 작업만 수행할 수 있다. Python과 Java는 멀티 스레드를 지워해 여러 코드 로직은 동시에 실행할 수 있지만, JS는 싱글 스레드 언어이기 때문에 하나의 코드만 실행할 수 있다. 하지만 웹 애플리케이션에서는 네트워크 요청, 타이머, 이벤트 처리와 같은 작업을 비동기적으로 병렬 처리하는 경우가 있다. JS가 하나의 동작씩 동작한다면 위와 같은 동작을 하는 웹 애플리케이션은 굉장히 느릴것이다. 이러한 속도 저하 문제를 해결하기 위해서 JS 언어 엔진에서가 아닌 브라우저 내부의 멀티 스레드인 Web APIs에서 비동기 및 논블로킹으로 작업을 처리한다. 위와 같은 방법은 메..
사전 지식으로 콜 스택(Call Stack)과 힙(Heap)을 알아야한다. Javascript는 단일 스레드(Single-threaded) 기반 언어로, 자바스크립트 엔지이 단일 콜 스택을 갖는다. 이 말은 요청이 동기적으로 처리된다는 것을 의미한다. 그런데 이상하다. 우리가 작성한 코드에는 분명 비동기로 작성한 부분이 있는데 이는 어떻게 된것인가? 이를 알기 위해 우선 이벤트 루프라는 용어를 정의 해보자. 1. 이벤트 루프의 역활은? 이벤트 루프는 싱글 스레드인 자바스크립트의 작업을 멀티 스레드로 돌려 작업을 동시에 처리 또는 여러 작업중 우선순위를 적용해 동작 순서를 결정하는 컨트롤러다. 정리하자면, 브라우저 내부의 Call Stack, Callback Queue, Web APIs 등의 요소를 모니터..
58청춘
'이벤트 루프' 태그의 글 목록