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

kimjaewon·2023년 8월 24일
0
post-thumbnail

두 개념이 차이는 작업의 완료를 기다리는 방식에 있다.

동기/비동기는 요청한 작업에 대한 완료가 순차적으로 수행할지 아닐지에 대한 관점이라면, 블로킹/논블로킹은 현재 작업이 block(차단,대기) 되느냐 아니냐에 따라 다른 작업을 수행할 수 있는지에 대한 관점이다.


블로킹(Blocking)

정의: 블로킹 방식은 특정 작업이(연산, 시스템 호출) 완료될 때까지 현재 스레드 또는 프로세스가 대기 상태로 전환되며, 다른 작업은 수행하지 않는다.

특징 :

1. 간단하고 직관적인 프로그래밍 모델을 제공한다
2. 자원을 효율적으로 활용허지 못하는 경우가 많다

논 블로킹(Non-Blocking)

정의: 논 블로킹은 특정 작업의 완료를 기다리지 않고 바로 제어를 반환한다. 작업이 완료되지 않았더라도 다은 작업을 계속 수행할 수 있다.

특징 :

1. 자원 활용도가 높아진다. 비동기 방식의 프로그래밍과 매우 좋은 효과를 나타낸다
2. 완료 순서를 예측하기 어렵거나, 비동기 결과 처리 로직을 추가적으로 구현해야 할 수있기 때문에 프로그래밍 복잡도가 높아질 수 있다

논 블로킹은 작업의 완료를 기다리지 않는 것을 의미하며,
비동기는 특정 작업이 백그라운드에서 실행되는 동안 주 스레드가 다른 작업을 수행할 수 있도록 하는것을 의미하기에, 둘은 같은 개념은 아니다

profile
올라가자

0개의 댓글