반응형
예전 포스팅에서 동기식과 비동기식 프로그래밍에 대해서 글을 다뤄본적이 있다.
자세한 사항은 아래 참고 포스팅을 확인해볼수 있다.
비슷한 내용일순 있지만 조금 개념이 다른 블로킹과 논 블로킹에 대해서 다뤄볼 것이다.
블로킹, 논블로킹은 동기, 비동기와는 다르게 요청자, 제공자 둘다의 입장에서 생각해야 한다.
블로킹은 하나의 작업을 처리할때 호출된 작업이 끝날때까지 호출한 작업이 기다리면 블로킹이고 논블로킹은 이 반대이다.
블로킹, 논블로킹은 동기, 비동기와는 다르게 직접 제어할 수 없는 것을 대상으로 할때 구분 하는 방법 입니다.
즉 블로킹은 해당 작업을 할동안 접근이 안되는 경우이다.
그리하여 동기, 비동기와 함께 블로킹, 논블로킹의 정의는 아래처럼 내릴수가 있다.
- 동기(Sync) 방식은 요청과 응답이 같은 순간에 끝나는 방식
- 비동기(ASync) 방식은 요청과 응답이 각각 다른 순간에 끝나는 방식
- 블로킹(Blocking) 은 호출된 작업이 끝날때까지 호출한 작업이 기다리는 방식
- 논블로킹(NonBlocking)은 호출한 작업이 호출된 작업을 기다리지 않고 결과를 발행/구독 형태로 통지 하는 방식
비동기, 논블로킹 방식은 서버의 Thread 처리 갯수가 늘어 난다거나 계산 속도를 극적으로 빠르게 하지 않고 오히려 발행/구독 형태의 구조를 가지다 보니 단일 작업에서는 성능이 떨어질 수도 있다. 하지만 Thread 들이 노는 시간을 극단적으로 줄이는 방식만으로 동일한 자원으로 더 많은 일을 처리할 수 있는 고효율을 달성 하게 된다.
참고 포스팅
https://thenicesj.tistory.com/159
반응형
'IT > Knowledge' 카테고리의 다른 글
XML , SOAP , WSDL 의 개념과 정의 (38) | 2022.08.28 |
---|---|
안티패턴이란? (55) | 2022.08.19 |
이클립스 버전 명칭들 (54) | 2022.08.14 |
argoCD 란? (59) | 2022.08.11 |
gitOps 란? (12) | 2022.08.09 |
댓글