티스토리 뷰

728x90

들어가기 전,

컴퓨터와 관련된 작업을 처리하다 보면 꼭 나오는 개념이었던 것 같은데 학생 때는 이해가 잘 안 됐다.

아마 당시에는 sync & blocking이고 async & non-blocking이다로 이해하고 넘어갔지만 개념 자체가 달랐다.

다시 언급되는 sync(동기) / async(비동기) 그리고 blocking / non-blocking에 대해서 알아보고 넘어가자.

 

Blocking / Non-blocking

행위자가 취한 행위 자체가 막힌, 제한된, 대기하는 상태

  • 호출된 함수가 자신이 할 일을 모두 마칠 때까지 제어권을 계속 가지고서 호출한 함수에게 바로 돌려주지 않으면 Block
  • 호출된 함수가 자신이 할 일을 채 마치지 않았더라도 바로 제어권을 건네주어(return) 호출한 함수가 다른 일을 진행할 수 있도록 해주면 Non-block

(musma 블로그)

결국은 현재 돌아가는 작업의 대상이 2개 이상인지, 수행 / 종료 시각을 가지고 있는지에 따라서 구분이 가능하다.

 

Sync / Async

시간으로 볼 때, 함께 / 같이 이루어지는 두 개 이상의 개체 혹은 이벤트

  • 호출된 함수의 수행 결과 및 종료를 호출한 함수가(호출된 함수뿐 아니라 호출한 함수도 함께) 신경 쓰면 Synchronous
  • 호출된 함수의 수행 결과 및 종료를 호출된 함수 혼자 직접 신경 쓰고 처리한다면(as a callback fn.) Asynchronous

(musma 블로그)

작업을 수행하는 주체가 2개 이상인가, 작업의 시간(시작, 종료)을 맞추는지 안 맞추는지

 

Use Case

  • Blocking & Sync
나: 00, 디자인 시안 주소 좀 알려줄 수 있어요?
디자이너: 네, 잠시만요.
디자이너: (피그마 가기.. 주소 찾기..)
나: (기다리기)
  • Blocking & Async
나: 이거 어떻게 처리되고 있어요?
동료: 음,, 여기서 같이 볼까요?
나:...?!
동료: (사이트 열기.. 주소 입력.. 들어가기.. 업무 중..)
나: (언제 일하러 가지.. 못 가고 계속 보고 있음)
  • Non-Blocking & Sync
나: 후임. 이것 좀 처리해줘요.
후임: 네. 다른 일 하고 계세요!
나: 알겠어요
후임: (작업 확인.. 작업 진행..)
나: 됐나요?
후임: 아직이요.
나: 됐어요?
후임: 아직이요.
  • Non-Blocking & Async
나: 후임. 이것 좀 처리해줘요.
후임: 네. 다른 일 하고 계세요!
나: 알겠어요
후임: (작업 확인.. 작업 진행..)
나: (일 중..)
후임: 이렇게 처리했습니다. 확인해주세요.
나: 잘했어요!

참고

https://musma.github.io/2019/04/17/blocking-and-synchronous.html

반응형

'CS' 카테고리의 다른 글

Transaction과 ACID 이해하기  (0) 2022.05.10