[Node.js] 블로킹 vs 논블로킹

박현아·2025년 10월 5일
0

SUPINFO

목록 보기
2/5

1️⃣ 블로킹(Blocking) vs 논블로킹(Non-blocking)

블로킹(Blocking)

  • 어떤 작업이 끝날 때까지 다음 코드가 실행되지 않는 것을 의미
  • 쉽게 말해, 작업 중에는 아무것도 못하고 기다리는 상태
  • Node.js에서 대표적인 예 : 동기식 파일 읽기(readFileSync)
const fs = require("fs");

console.log("시작");
const data = fs.readFileSync("file.txt", "utf8"); // 여기서 파일 읽는 동안 멈춤
console.log(data);
console.log("끝");

실행 순서:
시작
(파일 읽는 동안 잠시 멈춤)
파일 내용 출력

즉, 파일 읽기가 끝날 때까지 다른 작업이 진행되지 않음 → 서버라면 요청 처리도 멈춰버림

논블로킹(Non-blocking)

  • 작업을 시작하고, 끝나길 기다리지 않고 바로 다음 코드 실행
  • Node.js에서 주로 콜백(callback), Promise, async/await 방식으로 사용
  • 예시 : 비동기 파일 읽기(readFile)
const fs = require("fs");

console.log("시작");
fs.readFile("file.txt", "utf8", (err, data) => {
    console.log(data); // 파일 읽기 끝나면 실행
});
console.log("끝");

실행 순서:
시작

(나중에 파일 내용 출력)

서버에서는 다른 요청 처리를 중간에 멈추지 않고 계속 진행할 수 있음

2️⃣ 핵심 포인트

  1. 블로킹 → 작업 완료까지 기다림 → 다른 코드 정지
  2. 논블로킹 → 작업 시작 후 바로 다음 코드 실행 → 완료되면 콜백/Promise로 처리
  3. Node.js 서버에서는 블로킹 코드를 많이 쓰면 전체 서버 성능 저하

0개의 댓글