동기 & 비동기

하윤철·2024년 8월 7일


동기 & 비동기 개념을 다루면서 블로킹 & 논블로킹이랑 많이 헷갈려 하는 것 같기에 짧게 정리하려 한다.

동기

응답 받을 때까지 기다리는 것이 아니다 → 블로킹과 다르다.

A함수가 B함수를 호출 후 B의 완료 여부를 신경 쓸지 말지를 고려하는 것

⇒ 내가 호출 한 함수의 완료여부를 고려하는 것.

A가 B의 리턴(값)을 계속 확인하는 것

비동기

B의 작업 완료 여부는 상관이 없다.

B에게 콜백 함수를 같이 주면서 끝나면 알아서 해당 함수를 실행한다.

즉, 요청을 보낸 후 응답에 관계없이 다음 동작을 실행

작업이 병렬로 배치되어 실행된다.

Kafka, RabbitMQ 같은 기술의 통신 방식이다.(메세지 브로커)

블로킹

  • A → B 제어권 넘김
  • A(멈춤) / B(실행)
  • A ← B 제어권을 다시 넘김 (B 함수 완료 시)

논 블로킹

  • A가 제어권을 가진 상태로 B 호출
  • A(계속 실행) / B(실행)
profile
선순환을 만드는 개발자

0개의 댓글