-
42_Synchronous & Asynchronous모던 자바스크립트 딥 다이브 독학 2023. 12. 27. 16:21
동기 처리와 비동기 처리
- 자바스크립트 엔진은 단 하나의 실행 컨텍스트 스택을 갖는다. (한 번에 하나의 작업만 실행할 수 있는 싱글 스레드 방식으로 동작한다)
- 처리에 시간이 걸리는 작업을 실행하는 경우 블로킹(작업 중단)이 발생한다.
- 동기 처리: 현재 실행 중인 작업이 종료할 때까지 다음에 실행될 작업이 대기하는 방식
- 작업을 순서대로 하나씩 처리하므로 실행 순서가 보장되는 장점
- 앞선 작업이 종료할 때까지 이후 작업이 블로킹되는 단점
- 비동기 처리: 현재 실행 중인 작업이 종료되지 않은 상태라 해도 다음 작업을 곧바로 실행하는 방식
- 작업의 실행 순서가 보장되지 않는 단점
- 블로킹이 발생하지 않는 장점
- 타이머 함수인 setTimeout, setInterval, HTTP요청, 이벤트 핸들러는 비동기 방식으로 동작
이벤트 루프와 태스크 큐
브라우저 환경이 제공
- 이벤트 루프: 자바스크립트의 동시성을 지원하는 것
- 자바스크립트 엔진의 2가지 영역
- 콜 스택
- 힙
- 자바스크립트 엔진의 2가지 영역
- 태스크 큐
- 비동기 함수의 콜백 함수는 태스크 큐에 푸시되어 대기하다가 콜 스택이 비게 되면(전역 코드 및 명시적으로 호출된 함수가 모두 종료하면) 콜 스택에 푸시되어 실행된다.
- 자바스크립트는 싱글 스레드 방식으로 동작(브라우저가 아닌 브라우저에 내장된 자바스크립트 엔진), 브라우저는 멀티 스레드로 동작
- 브라우저와 자바스크립트 엔진의 협력으로 비동기 함수를 실행한다.
'모던 자바스크립트 딥 다이브 독학' 카테고리의 다른 글
44_REST API (0) 2024.01.03 43_Ajax (0) 2024.01.01 41_Timer (0) 2023.12.25 40_Event (1) 2023.12.20 39_Dom (0) 2023.12.14