[CS 스터디] 2. 네트워크 - Blocking/Non-blocking & Synchronous/Asynchronous

채채·2023년 12월 20일
0

CS 스터디

목록 보기
20/21

Blocking/Non-blocking

블럭/논블럭은 호출된 함수가 호출한 함수에게 제어권을 건네주는 유무의 차이

Situation: A -> B 호출

  • Blocking: B 함수가 일을 다 마칠 때까지 제어권을 가짐. A는 B의 수행 완료를 대기
  • Non-blocking: B 함수가 일을 다 마치지 않았더라도 A에게 제어권 반환, A는 B를 기다라ㅣ며 다른 일 수행

호출된 함수에서 일을 시작할 때 바로 제어권을 리턴해주느냐 아니냐에 따라 나뉨

Synchronous/Asynchronous

동기/비동기는 일을 수행 중인 동시성에 주목

Situation: A -> B 호출

  • Synchronous: 함수 A는 함수 B가 일을 하는 중에 기다리면서, 현재 상태가 어떤지 계속 체크
  • Asynchronous: 함수 B의 수행 상태를 B 혼자 직접 신경쓰며 처리 (Callback)

호출된 함수(B)를 호출한 함수(A)가 신경쓰는지, 호출된 함수(B) 스스로 신경쓰는지를 동기/비동기라 생각하면 됨

비동기는 호출 시 Callback을 전달하여 작업의 완료 여부 응답
호출한 함수는 Callback 이 오기 전까지 신경쓰지 않고 다른 일 가능

profile
성장하는 사람

0개의 댓글