Node.js는 어떻게 비동기 작업을 하는거임

yjkim·2024년 9월 25일
0

Node.js는 싱글스레드 기반으로 동작함. 싱글스레드로 동작한다는 소리는 한 번에 하나의 작업만 실행할 수 있다는 것을 의미함. 하지만 async/await 구문과 promise 객체의 존재를 보면 알 수 있듯이 우리의 javascript 친구는 비동기작업을 아주 기가막히게 처리해줌. 대체 어떻게 하는걸까?

이벤트 루프

자바 스크립트 코드 실행은 스레드에서 담당하고 비동기작업은 이벤트 루프에 등록되어 백그라운드엣에서 실행됨 이벤트 루프는 요청을 처리하면서 블로킹 작업을 피하고 (non-blocking), 작업이 완료될 때까지 기다리는 대신 다른 작업을 계속 진행할 수 있게 함. 콜 스택 과 태스크 큐를 사용

콜 스택 (call stack)

자바스크립트 코드가 실행되는 공간. 코드가 동기적이면 콜 스택에서 순차적으로 처리됨

태스크 큐 (task queue)

비동기 작업(예: 네트워크 요청, 파일 읽기, 데이터베이스 접근 등)은 콜 스택에서 바로 처리되지 않고 백그라운드에서 실행. 백그라운드에서 실행된 작업이 완료되면 그 결과가 태스크 큐에 담김
태스크 큐에 쌓인 작업은 콜 스택이 비어 있을 때 이벤트 루프가 이를 콜 스택으로 다시 가져와 실행함




습관적으로 사용하던 것의 원리를 개념적으로 이해하게 되는 순간은 언제나 즐거운 것 같습니다.
profile
We may throw the dice, but the Lord determines how they fall

0개의 댓글