네트워크

Blocking/Non-blocking & Synchronous/Asynchronous

탁재민 2024. 3. 10. 23:00

Blocking / Non-blocking

  • Blocking: 호출된 함수가 완료될 때까지 호출한 함수 실행을 멈춤, 제어권이 호출된 함수에 있음
  • Non-blocking: 함수 호출 시 호출된 함수가 즉시 제어권 반환, 호출한 함수는 제어권 가지고 계속 실행

Synchronous / Asynchronous

  • Synchronous (동기): 작업 완료 여부 따져 작업들이 순차적으로 실행, 완료 여부 따로 확인
  • Asynchronous (비동기): 요청한 작업에 대해 완료 여부를 따지지 않고 서로 독립적으로 실행, 완료 시 콜백 반환

결합된 형태

  • Blocking Synchronous: 전통적인 동기적 함수 호출, 호출된 함수가 완료될 때까지 대기
  • Non-blocking Synchronous: 호출된 작업은 즉시 반환되지만,폴링을 통해 호출된 함수의 상태를 반복적으로 확인
  • Blocking Asynchronous: 완료되기 전까지는 다른 작업으로 넘어가지 않고, 콜백이 호출될 때까지 대기(사용 X)
  • Non-blocking Asynchronous: 작업을 시작하고 즉시 반환하여 호출한 함수가 다른 작업을 계속 수행, 완료 시 콜백