CS 정리

블로킹(Blocking) & 논블로킹(Non-Blocking)

문쿼리 2025. 9. 2. 21:59
"호출 시 제어권을 넘겨주냐 마냐"

 

블로킹(Non-Blocking)

어떤 작업을 요청했을 때, 그 작업이 끝날 때까지 프로그램이 멈추고 기다리는 방식. 대기 중 다른 작업 불가
ex) 파일 읽기 요청을 했을 때, 데이터가 다 읽힐 때까지 CPU가 기다림.

 

논블로킹(Non-Blocking)

작업을 요청하면 즉시 제어권을 반환하고 다른 일을 할 수 있는 방식, 결과는 나중에 확인하거나 이벤트/콜백으로 발생
ex) 파일 읽기 요청을 해두고, 데이터가 준비되면 알림(콜백, 이벤트 루프)으로 결과를 받음.

 

카페에서 커피 주문 후, 커피가 나올 때까지 카운터 앞에서 서서 기다리는 것. (=블로킹)
커피 주문 후, 진동벨을 받고 자리에 앉아 다른 일을 하다가 커피가 준비되면 벨이 울려 찾으러 가는 것. (=논블로킹)

 

비교

구분 블로킹 (Blocking) 논블로킹 (Non-Blocking)
동작 방식 작업이 끝날 때까지 대기 요청 즉시 반환, 다른 일 가능
CPU 활용 대기 시간 동안 놀게 됨 대기 시간 동안 다른 작업 수행
구현 난이도 단순 복잡 (콜백, 이벤트 루프 필요)
적합한 경우 작은 규모, 직관적 코드 대규모 동시성, 네트워크 서버

 

'CS 정리' 카테고리의 다른 글

논동기와 비블로킹  (1) 2025.09.05
동기(Synchronous) & 비동기(Asynchronous)  (0) 2025.09.03
Feign 사용해보기  (1) 2025.08.11
Java + Kotlin 혼용 개발  (0) 2025.07.31
BunkerWeb, 도입 시 겪은 이슈: HTTP/2 프로토콜  (0) 2025.07.29