Blocking | Non-Blocking | |
---|---|---|
Synchronous | 호출 함수가 결과 반환까지 대기 (호출 스레드 Block) | 호출 함수가 결과 반환까지 대기하나, 작업 완료 여부는 지속 확인 필요 |
Asynchronous | 호출 함수는 대기하지 않음. 실제 작업은 별도 스레드에서 Block됨 | 호출 함수는 대기하지 않음. 작업 완료 시 이벤트/콜백으로 결과 처리 |
설명:
- Synchronous & Blocking: 함수를 호출하면, 해당 작업이 완료되어 결과를 반환할 때까지 호출한 스레드는 멈춰서 기다림.
- Synchronous & Non-Blocking: 함수를 호출하면 즉시 결과를 반환하지만, 실제 작업 완료 여부는 아님(예를 들어, 준비 안됨 표시를 한다던가). 호출한 스레드는 멈추지 않지만, 작업이 완료될 때까지 계속 상태를 확인(Polling 등)해야 합니다.
- Asynchronous & Blocking: 함수를 호출하면 바로 리턴되어 호출 스레드는 다른 작업을 할 수 있음. 하지만 실제 I/O 등의 작업 자체는 백그라운드 스레드 등에서 Blocking 방식으로 처리될 수 있음. (작업 완료 시 콜백 등으로 알림을 받음)
- Asynchronous & Non-Blocking: 함수를 호출하면 바로 리턴되고, 실제 작업도 시스템 레벨에서 Non-Blocking으로 처리됨. 작업이 완료되면 이벤트 루프나 콜백을 통해 결과를 전달받음.
정말 쉽게 이해를 해보자면,
Synchronous 와 Asynchronous는 요청 스레드의 상태고, Blokcing과 NonBlokcing은 요청을 처리하는 스레드의 이야기다.
'기타' 카테고리의 다른 글
[MSA] 분산 트랜잭션의 문제 해결 - 사가(Saga) (0) | 2025.05.01 |
---|---|
3-Way Handshake & 4-Way Handshake (0) | 2025.05.01 |
지식이 값싼 시대 (0) | 2025.04.30 |
[MSA] 마이크로서비스 통신 방식 (0) | 2025.04.22 |
도커 이미지 정리 스크립트 저장용 (0) | 2025.04.20 |
댓글