피드로 돌아가기
Dev.toFrontend
원문 읽기
Single Thread 한계를 극복한 Event Loop 기반 비동기 처리 메커니즘
Event Loop: como o JavaScript executa código assíncrono
AI 요약
Context
JavaScript의 Single Thread 구조로 인한 동기적 코드 실행 시 블로킹 발생 가능성 존재. 네트워크 요청이나 타이머와 같은 외부 I/O 작업 처리 시 메인 스레드 점유로 인한 성능 저하 해결 필요.
Technical Solution
- LIFO 구조의 Call Stack을 통한 동기적 함수 실행 및 Global Execution Context 관리
- Browser Web APIs 또는 Node.js libuv를 통한 외부 스레드 기반 비동기 작업 위임 처리
- FIFO 구조의 Task Queue(Macrotask Queue)를 활용한 외부 처리 완료 콜백의 대기열 관리
- Microtask Queue를 도입하여 Promise 등 엔진 내부 비동기 작업에 최우선 순위 부여
- Call Stack이 비어있는 시점에 Microtask Queue를 완전히 비운 후 Task Queue를 처리하는 Event Loop 스케줄링 설계
실천 포인트
- 비동기 작업의 우선순위 제어를 위해 Promise(Microtask)와 setTimeout(Macrotask)의 동작 차이 검토 - 메인 스레드 블로킹 방지를 위한 무거운 연산의 비동기 분산 처리 적용 - Node.js 환경의 경우 nextTick Queue의 최고 우선순위 동작 특성 고려