Node.js는 싱글 스레드가 아닙니다(전체적으로는)
- Node.js는 싱글 스레드라는 오해가 널리 퍼져 있지만, 실제로는 전체적으로 싱글 스레드가 아니다. 💡
- 개발 시에는 싱글 스레드처럼 생각하고 코딩하는 것이 편리하지만, Node.js는 내부적으로 멀티스레드를 활용한다. 💻
- 이벤트 루프를 담당하는
libuv 라이브러리가 파일 시스템, 암호화, 압축, 도메인 찾기 등 특정 작업을 백그라운드에서 멀티스레드로 처리하여 성능 병목을 방지한다. ⚙️
- 네트워크 요청은 멀티스레드로 처리되지 않는 예외적인 경우이다. 📡
UV_THREADPOOL_SIZE 환경 변수를 통해 libuv의 멀티스레드 개수를 조절할 수 있다. 🔢
worker_threads 내장 모듈을 통해 개발자가 직접 멀티스레드를 다룰 수도 있으나, 사용에 제한이 많다. 🧵
- 이러한 내부적인 멀티스레드 활용 외에는 싱글 스레드 모델로 코딩하는 것이 일반적이며 편리하다. 🧠
데브허브 | DEVHUB | Node.js는 싱글 스레드가 아닙니다(전체적으로는)