동기 & 비동기, 블로킹 & 논블로킹

Einere·2022년 12월 15일
0

간단하게 정리해봄..

동기 & 비동기 (syncronous & asyncronous)

동기 & 비동기 : 특정 작업의 수행 결과를 즉시 받는지, 받지 않는지의 차이.

  • 동기 : 요청에 대한 응답이 즉시 와야 한다. (즉, 다른 작업이 중간에 새치기 할 수 없다.)
  • 비동기 : 요청에 대한 응답이 즉시 오지 않아도 된다. (다른 작업을 중간에 수행할 수 있다.)

블로킹 & 논블로킹 (blocking & non-blocking)

블로킹 & 논블로킹 : 작업 간 의존성으로 인해 다른 작업의 실행 가능 여부. (실행 흐름이 막히는지, 안 막히는지의 차이.)

  • 블로킹 : 작업 간 의존성으로 인해, 이전 작업이 완료되기 전까지 다음 작업을 수행할 수 없다.
  • 논 블로킹 : 이전 작업이 완료되기 전에 다음 작업을 수행할 수 있다.

예시

예를 들어, 파일을 읽어서 특정 작업을 한다고 하자. 파일을 다 읽기 전까지는 특정 작업을 수행할 수 없으므로 블로킹이다.
그런데 JS의 경우, 이벤트 루프를 통해 파일 읽기를 다른 프로세스에게 위임하기 때문에 파일 읽기가 완료되기 전에 다른 작업을 먼저 수행할 수 있다.
따라서 이 경우 비동기 블로킹이라고 할 수 있다.

또다른 예로서, PR 및 코드리뷰를 가정해보자. 만약 로그인 기능을 PR올렸다고 하자. 회원 정보 기능을 구현하기 위해서는 우선 로그인 기능이 전제되어야 한다. 따라서 해당 PR이 머지되기 전까지는 회원과 관련된 기능을 개발할 수 없으므로 블로킹이다.
만약 해당 기능이 핫픽스 기능이라 빨리 머지되어야 한다면 동기 블로킹이다.
그러나 해당 기능이 급하지 않아서 깃헙 PR을 통해 느긋하게 코드리뷰를 수행한 뒤 머지를 한다면 비동기 블로킹이다.

profile
지속가능한 웹 개발자를 지향합니다. 경험의 공유를 통해 타인에게 도움이 되는 것을 좋아합니다. 사용자에게 가치를 제공하는 것에 기쁨을 느낍니다.

0개의 댓글