본문 바로가기
IT/Knowledge

블로킹, 논블로킹 프로그래밍

by 성준하이 2022. 8. 16.
반응형

예전 포스팅에서 동기식과 비동기식 프로그래밍에 대해서 글을 다뤄본적이 있다.

자세한 사항은 아래 참고 포스팅을 확인해볼수 있다.

 

비슷한 내용일순 있지만 조금 개념이 다른 블로킹과 논 블로킹에 대해서 다뤄볼 것이다.

 

블로킹, 논블로킹은 동기, 비동기와는 다르게 요청자, 제공자 둘다의 입장에서 생각해야 한다.

블로킹은 하나의 작업을 처리할때 호출된 작업이 끝날때까지 호출한 작업이 기다리면 블로킹이고 논블로킹은 이 반대이다.

 

블로킹, 논블로킹은 동기, 비동기와는 다르게 직접 제어할 수 없는 것을 대상으로 할때 구분 하는 방법 입니다.

 

즉 블로킹은 해당 작업을 할동안 접근이 안되는 경우이다.

 

그리하여 동기, 비동기와 함께 블로킹, 논블로킹의 정의는 아래처럼 내릴수가 있다.

 

  • 동기(Sync) 방식은 요청과 응답이 같은 순간에 끝나는 방식
  • 비동기(ASync) 방식은 요청과 응답이 각각 다른 순간에 끝나는 방식
  • 블로킹(Blocking) 은 호출된 작업이 끝날때까지 호출한 작업이 기다리는 방식
  • 논블로킹(NonBlocking)은 호출한 작업이 호출된 작업을 기다리지 않고 결과를 발행/구독 형태로 통지 하는 방식

비동기, 논블로킹 방식은 서버의 Thread 처리 갯수가 늘어 난다거나 계산 속도를 극적으로 빠르게 하지 않고 오히려 발행/구독 형태의 구조를 가지다 보니 단일 작업에서는 성능이 떨어질 수도 있다. 하지만 Thread 들이 노는 시간을 극단적으로 줄이는 방식만으로 동일한 자원으로 더 많은 일을 처리할 수 있는 고효율을 달성 하게 된다.


참고 포스팅

https://thenicesj.tistory.com/159

 

동기 / 비동기 프로그래밍

자바스크립트를 다뤄본 사람은 비동기 프로그래밍이라고 들어본적이 있을것이다. 사전적 의미를 먼저 보자면 동기적(synchronous) 어떤 일이나 행동을 일으키게 하는 계기가 되는. 또는 그런 것.

thenicesj.tistory.com

 

반응형

'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

댓글