시스템의 실행한도(실행할 수 있는 최대 콜백 개수)
nodejs는 C++로 작성된 런타임(특정 언어로 만든 프로그램을 실행할 수 있는 환경)
으로서 브라우저에서만 실행할 수 있던 자바스크립트를 로컬에서 실행할 수 있어 확장성 있는 네트워크 애플리케이션을 만들 수 있도록 설계되었다.
그리고 nodejs를 공부하게되면single thread non-blocking model
이란 개념이 계속 나온다. single thread면 하나의 프로세스 처리를 끝내야 다음 프로세스를 처리할 수 있는 blocking model
이 아닌가 생각하여 nodejs는 single thread라면서 어떻게 non-blocking model이라는 거지???🤔라는 의문을 품었었다.
하지만, 여기에서 event loop
와 libuv & OS Kernel
을 통해 nodejs는 single thread
임에도 불구하고 I/O 작업(filesystem, network, third party API, http etc...)이 발생하면 이를 non-blocking으로 비동기 작업을 수행
할 수 있다.
// TODO: 계속 정리해야 됨
nodejs동작원리 single-thread, event-loop, blocking/Non-blocking I/O, event driven