동기와 비동기, Blocking vs Non-Blocking

배세훈·2022년 10월 18일
0

Spring

목록 보기
38/38

Blocking / Non-blocking

Blocking

  • 행위자가 취한 행위 자체가 또는 그 행위로 인해 다른 무엇이 막혀버린, 제한된, 대기하는 상태.
  • 호출된 함수가 자신이 할 일을 모두 마칠 때까지 제어권을 계속 가지고서 호출한 함수에게 바로 돌려주지 않으면 Block
  • 호출된 함수가 자신이 할 일을 채 마치지 않았더라도 바로 제어권을 건네주어(return) 호출한 함수가 다른 일을 진행할 수 있도록 해주면 Non-block

Synchronous / Asynchronous

  • 동시에 발생하는 것들
  • 호출된 함수의 수행 결과 및 종료를 호출한 함수가(호출된 함수뿐 아니라 호출한 함수도 함께) 신경 쓰면 Synchronous
  • 호출된 함수의 수행 결과 및 종료를 호출된 함수 혼자 직접 신경쓰고 처리한다면 Asynchronous

예시

Blocking & Synchronous

A: 서류 처리 좀 해주세요.
B: 알겠습니다. 잠깐만 거기 계세요
A: (가만히 서 있음)
B: (일처리 중..)
A: (과정 지켜봄. 내 일을 하러 못 가고 서 있음)

Blocking & Asynchronous

A: 서류 처리 좀 해주세요.
B: 알겠습니다. 잠깐만 거기 계세요
A: (가만히 서 있음)
B: (일처리 중..)
A: (B가 하는 일에는 관심 없지만 못 가고 계속 서 있음)

Non-blocking & Synchronous

A: 서류 처리 좀 해주세요.
B: 알겠습니다. 가서 볼 일 보세요
A: 넵
B: (일처리 중..)
A: 서류 처리 됬나요?
B: 아직요
A: 서류 처리 됬나요?
B: 아직요

Non-blocking & Asynchronous

A: 서류 처리 좀 해주세요.
B: 알겠습니다. 가서 볼 일 보세요
A: 넵
B: (일 처리 중..)
A: (자기 할 일 중..)
B: 서류 처리 완료되었습니다.
A: 감사합니다
profile
성장형 인간

0개의 댓글