wonsss / vanila-js-wiki

1 stars 0 forks source link

Task queue & Event loop #5

Open wonsss opened 2 years ago

wonsss commented 2 years ago
wonsss commented 2 years ago

유튜브 영상링크: 어쨌든 이벤트 루프는 무엇입니까? | Philip Roberts | JSConf EU JSConf 채널에서 Philip Roberts의 영상을 보고 요약한 내용이다.

자바스크립트가 실제로 어떻게 동작하나? 싱글 스레드 환경이라고 하나, 콜백은 실제로 어떻게 작동할까?

자바스크립트는 싱글 스레드, 논 블로킹, 비동기, 동적(single threaded, non-blocking, asynchronous, concurrent) 언어이다.

크롬에 내장된 자바스크립트 런타임인 V8 엔진은 아래와 같이 구성됐다. <자바스크립트 런타임을 단순화한 이미지>

Single Thread

자바스크립트는 싱글 스레드 언어로서, 싱글 스레드 런타임을 가지고 있는데, 이는 결국 한 번에 하나의 싱글 콜 스택만을 가지고 있다는 말이다. 싱글 스레드의 의미는 하나의 프로그램은 동시에 하나의 코드만 실행할 수 있다는 것이다.

Single Call Stack

콜스택은 데이터 구조로서, 실행되는 순서를 기억하고 있다. 함수를 실행하려면, 우리는 스택에 해당하는 함수를 집어넣게 되는데, 함수에서 리턴이 일어나면 스택의 가장 위쪽에서 해당 함수를 꺼내게 된다. 이게 콜스택이 하는 일의 전부다.

Blocking

블로킹은 느리게 실행되는 코드다. 예를 들어, 네트워크 요청이나 이미지 프로세싱은 느리다. 느린 동작이 스택에 남아있는 것을 보통 블로킹이라고 말한다.

Asynchronous callback

Concurrency & the Event Loop

동시성과 이벤트 루프

Simulating

영상에서 구현하는 부분 캡처 및 설명

이벤트 루프 작동과정 시각화한 사이트

latentflip loupe 예제 1

latentflip loupe 예제 2

latentflip loupe 예제 3