블로킹 작업은 동기적으로 실행되며 끝날 때까지 단 하나뿐인 JavaScript 스레드를 붙잡아 둡니다 — 그동안 다른 어떤 것도 실행될 수 없습니다. 논블로킹 작업은 일을 시작한 뒤 즉시 반환하고, 결과는 나중에 callback, Promise, 또는 이벤트를 통해 전달합니다. 그래서 스레드는 다른 일을 할 여유를 유지합니다.
왜 Node는 싱글 스레드인데도 논블로킹인가
당신의 JavaScript는 가 구동하는 스레드에서 실행됩니다. I/O(파일, 네트워크, DNS)는 에 위임되며, libuv는 내부적으로 OS의 비동기 기능과 작은 을 사용합니다. 그 작업이 스레드 밖에서 진행되는 동안 event loop는 다른 callback을 계속 처리합니다. I/O가 완료되면 그 callback이 큐에 들어가 실행됩니다.
