Home Node.js 동기와 비동기 방식
Post
Cancel

Node.js 동기와 비동기 방식

Node.js를 공부해보면서 중요한 개념인 동기와 비동기 방식에 대해 적어보려한다.

동기 처리 방식(Synchronous)

동기 처리 방식(synchronous)은 일련의 작업을 순차적으로 실행하며, 각 작업이 완료될 때까지 다음 작업을 실행하지 않는 방식이다.

JavaScript 코드로 예시를 들어보면

1
2
3
console.log(1);
let data = fs.readFileSync('data.txt',{encoding:'utf8'}); 
console.log(data);

동기 처리 방식에서는 1번 줄 코드 -> 2번 줄 코드 -> 3번 줄 코드 실행이 순차적으로 진행되며, 각 줄의 실행이 끝나면 다음 줄로 이동하는 형태로 실행된다(만약 각 작업이 완료되지 않았다면 다음 줄 코드는 이 실행이 완료 될 때까지 실행 되지 않는다).

비동기 처리 방식(Asynchronous)

비동기 처리 방식(asynchronous)은 일련의 작업을 순차적으로 실행하지 않고, 작업을 백그라운드에서 병렬로 실행하며, 작업이 완료되지 않았더라도 다음 작업을 실행할 수 있는 방식이다.

JavaScript 코드로 예시를 들어보면

1
2
3
4
5
6
console.log(1);
fs.readFile('data.txt',{encoding:'utf8'},function(err,data){
  console.log(2);
  console.log(data);
})
console.log(3);


비동기 처리 방식에서는 동기 처리 방식과는 다르게 순차적으로 실행되지 않고, console.log(1) 후 readFile이 시작되고 바로console.log(4)가 실행된다. 그리고 readFile의 실행이 끝나면 function을 (콜백함수)통해 끝났다는 것을 알려준다. 즉 작업이 완료되지 않았더라도 다음 작업을 실행한다.

Node.js는 비동기 방식을 이용한다.

Node.js는 비동기 IO를 지원하며 Single-Thread 기반으로 동작하는 서버이다.


비동기 처리 방식은 주로 긴 시간이 필요한 작업에 사용되며, 작업 간의 순서와 실행 시간이 중요하지 않은 경우에 사용된다.

Node.js에서는 비동기 처리 방식을 이용하기 때문에 시스템의 처리 속도가 높다는 장점을 가지고 있다.

This post is licensed under CC BY 4.0 by the author.