blocking VS non-blocking, sync VS async (호기)

도두맨·2025년 1월 10일

공부

목록 보기
4/23

호기의 blocking VS non-blocking, sync VS async를 보고 주관적으로 정리한 내용입니다.

순서

  • Blocking VS Non-Blocking
  • Sync VS Async
  • 4가지 조합

Blocking VS Non-Blocking

제어권이 누구에게 있는지에 따라 Blocking과 Non-Blocking을 구별 가능
제어권: 함수를 실행할 수 있는 권리

Blocking

  • A함수를 실행할 때는 A가 제어권을 가지고 있다가 B함수를 호출하면서 B에게 제어권을 넘겨줌
  • B함수의 실행이 끝나면 다시 제어권을 돌려받고 남은 함수를 실행

Non-Blocking

  • Blocking과 달리 기다리지 않고 자신의 코드를 실행할 수 있음
  • A함수를 실행할 때는 A가 제어권을 가지고 있다가 B함수를 호출하면서 B에게 제어권을 잠시 넘겨줌
  • A는 바로 제어권을 돌려받고 자신의 코드 실행. 호출받은 B도 자신의 코드 실행
  • 거의 동시에 실행하는 것처럼 보임

Sync VS Async

Synchronous

  • Synchronous: 시간을 함께하다
  • A는 B가 끝나길 기다림

Asynchronous

  • Asynchronous: 시간을 함께하지 않음
  • A가 B가 언제 끝나든지 관심 없음
  • B를 호출하고 A는 자신의 작업을 수행

Blocking == Sync

Non-Blocking == Async

  • 관점의 차이
  • 제어권을 기준으로 보면 Blocking, Non-Blocking
  • 시간을 기준으로 보면 Sync, async

4가지 조합

Sync blocking

  • block, sync 조합을 사용하는 대표적인 예시 - 기본적인 자바 언어, In/Out 작업

Sync non-blocking

  • non-block, sync 조합을 사용하는 대표적인 예시 - 롤 로딩창 (100%가 되기 전까지 대기 중이지만 유저의 레벨이나 숙련도 등 여러 정보를 확인할 수 있음)

Async blocking

  • 일부 개발자는 이 조합을 안티 패턴이라고 부름 - 예시를 찾지 못함
  • 검색해본 결과 Sync-blocking과 별 차이가 없음
  • 실무에서 사용된 사례는 Node.js + MySQL의 조합이 대표적 - Node.js에서 비동기 방식으로 데이터베이스에 접근하기 때문에 Async 이지만, MySQL 데이터베이스에 접근하기 위한 MySQL 드라이버가 블로킹 방식으로 동작함

Async non-blocking

  • js의 동작 방식 - ajax 통신으로 요청을 보내고, 나중에 필요하면 콜백을 통해 가져옴

https://youtu.be/cmBFGSrHKnM?list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH [10분 테코톡] 호기의 blocking VS non-blocking, sync VS async

0개의 댓글