- 0
- 2
싱글 스레드 언어인 자바스크립트, 동시에 여러 작업이 수행 가능한 이유
답변 확인
1. 싱글 스레드란?
- 자바스크립트는 단일
콜 스택 (Call Stack)
을 가진 싱글 스레드 언어로, 한 번에 하나의 작업만 처리합니다.
2. 어떻게 동시에 여러 작업 수행 가능?
- 비동기 작업을 처리할 때 자바스크립트는 콜백함수와 이벤트 루프를 활용하여 비동기적으로 여러 작업을 효율적으로 처리
3. 비동기 작업 처리 흐름
1) 콜 스택(Call Stack )
- 코드가 실행되면 함수 호출이 콜 스택에 쌓이고, 하나씩 처리
- 싱글 스레드이기 때문에 콜 스택에 있는 작업이 완료되어야만 다음 작업 처리 가능
2) Web API (or Node APIs)
- 브라우저 환경(Node.js)에서 비동기 작업
setTimeout
,fetch
, 이벤트 핸들러 등)은 Web API로 보내짐 - Web API는 자바스크립트 엔진 외부에서 비동기 작업 처리
3) 태스크 큐
- 매크로태스크 큐
- 일반적인 비동기 작업의 콜백(setTimeout, setInterval, I/O 작업, 이벤트 핸들러 등)이 대기하는 큐.
- 이벤트 루프의 한 번 반복에서 한 개씩 처리됩니다.
- 마이크로태스크 큐
- 높은 우선순위의 비동기 작업(Promise.then, MutationObserver 등)이 대기하는 큐.
- 이벤트 루프는 매크로태스크 실행 전에 마이크로태스크 큐를 모두 처리합니다.
4) 이벤트 루프(Event Loop)
- 이벤트 루프는 콜 스택이 비었을 때 태스크 큐에서 대기 중인 작업을 콜 스택으로 가져와 실행합니다.
- 이 과정에서 자바스크립트는 마치 동시에 여러 작업이 처리되는 것처럼 보이게 됩니다.
4. 효과
이러한 메커니즘 덕분에 자바스크립트는 UI가 끊기지 않고, 대기 시간이 필요한 작업도 효율적으로 처리할 수 있음
Top comments (2)
- DavidYang2월 19일
우와 댓글이다~
- Olivia2월 19일
오오 ~~ :) 너무 글 좋네용