Blocking

blocking.png

블로킹(Blocking) 작업은 하나의 작업이 완료될 때까지 다음 작업이 대기하는 방식입니다. 예를 들어, 파일 읽기 작업이 블로킹 방식이라면 해당 파일이 완전히 읽힐 때까지 프로그램의 흐름이 멈추게 됩니다. 이는 코드가 순차적으로 실행되며, 각 작업이 다음 작업으로 넘어가기 전에 반드시 완료되어야 한다는 것을 의미합니다.

const fs = require('fs');

try {
    const data = fs.readFileSync('example.txt', 'utf8');
    console.log("블로킹 파일 내용:", data);
} catch (err) {
    console.error("오류 발생:", err);
}

동기(Synchronous) 방식과의 차이점

주요 차이점

Non-blocking

non-blocking.png

논블로킹(Non-blocking) 작업은 작업의 완료 여부와 관계없이 즉시 제어권을 반환하는 방식입니다. Node.js의 대부분의 I/O 작업은 논블로킹 방식으로 동작합니다. 작업이 완료되지 않더라도 즉시 다음 코드를 실행할 수 있도록 하는 것입니다. 이 방식 덕분에 Node.js는 동시에 많은 작업을 처리할 수 있어 효율적인 서버로 사용할 수 있습니다.