본문 바로가기
기타

(Synchronous || Asynchronous) || (Blocking || Non-Blocking)

by Nhahan 2025. 5. 1.
  Blocking Non-Blocking
Synchronous 호출 함수가 결과 반환까지 대기 (호출 스레드 Block) 호출 함수가 결과 반환까지 대기하나, 작업 완료 여부는 지속 확인 필요
Asynchronous 호출 함수는 대기하지 않음. 실제 작업은 별도 스레드에서 Block됨 호출 함수는 대기하지 않음. 작업 완료 시 이벤트/콜백으로 결과 처리

 

설명:

  1. Synchronous & Blocking: 함수를 호출하면, 해당 작업이 완료되어 결과를 반환할 때까지 호출한 스레드는 멈춰서 기다림.
  2. Synchronous & Non-Blocking: 함수를 호출하면 즉시 결과를 반환하지만, 실제 작업 완료 여부는 아님(예를 들어, 준비 안됨 표시를 한다던가). 호출한 스레드는 멈추지 않지만, 작업이 완료될 때까지 계속 상태를 확인(Polling 등)해야 합니다.
  3. Asynchronous & Blocking: 함수를 호출하면 바로 리턴되어 호출 스레드는 다른 작업을 할 수 있음. 하지만 실제 I/O 등의 작업 자체는 백그라운드 스레드 등에서 Blocking 방식으로 처리될 수 있음. (작업 완료 시 콜백 등으로 알림을 받음)
  4. Asynchronous & Non-Blocking: 함수를 호출하면 바로 리턴되고, 실제 작업도 시스템 레벨에서 Non-Blocking으로 처리됨. 작업이 완료되면 이벤트 루프나 콜백을 통해 결과를 전달받음.

 

 

정말 쉽게 이해를 해보자면,

Synchronous 와 Asynchronous는 요청 스레드의 상태고, Blokcing과 NonBlokcing은 요청을 처리하는 스레드의 이야기다.

댓글