블로킹(Blocking) 작업은 하나의 작업이 완료될 때까지 다음 작업이 대기하는 방식입니다. 예를 들어, 파일 읽기 작업이 블로킹 방식이라면 해당 파일이 완전히 읽힐 때까지 프로그램의 흐름이 멈추게 됩니다. 이는 코드가 순차적으로 실행되며, 각 작업이 다음 작업으로 넘어가기 전에 반드시 완료되어야 한다는 것을 의미합니다.
const fs = require('fs');
try {
const data = fs.readFileSync('example.txt', 'utf8');
console.log("블로킹 파일 내용:", data);
} catch (err) {
console.error("오류 발생:", err);
}
주요 차이점
논블로킹(Non-blocking) 작업은 작업의 완료 여부와 관계없이 즉시 제어권을 반환하는 방식입니다. Node.js의 대부분의 I/O 작업은 논블로킹 방식으로 동작합니다. 작업이 완료되지 않더라도 즉시 다음 코드를 실행할 수 있도록 하는 것입니다. 이 방식 덕분에 Node.js는 동시에 많은 작업을 처리할 수 있어 효율적인 서버로 사용할 수 있습니다.