🔥 공대생은 성장 중/세미나

⚙️ Block, Non-Block, sync(동기), Async(비동기) 의 간단한 개념

민돌v 2022. 10. 31. 21:17
728x90

아래의 글 순서대로 읽으시면 해당 글을 이해하시는데 족흠 도움이 됩니다 🙏 

⚙️ Block, Non-Block, sync(동기), Async(비동기) 의 간단한 개념 (now) 
[Spring] Webclient 란❓ (RestTemplate vs WebClient)
[Spring] WebClient 사용방법 가이드
[spring] WebFlux란 + Reactor 객체란 (Mono<> 와 Flux<>)

 

 

https://www.youtube.com/watch?v=IdpkfygWIMk 

해당 테크톡 정리 글!! 

 

[용어 약속]

제어권의 반환

  • 반환 - 제어권의 반환

결과값의 전달

  • 함수의 return 값

Block 과 Non-Block

  • Block 과 Non-Block 의 요지는 제어권에 있습니다.
  • 제어권이란 행동할 수 있는 권리이고,
  • 제어권의 반환이란, 이 행동할 수 있는 권리의 이동이라고 말할 수 있죠

블락과 논 블락킹

 

이게 무슨말이나면..!

 

Block 방식은

  1. 호출자함수를 호출하면
  2. 호출된 함수 제어권이 이동되면서 함수의 로직을 실행하게 되고
  3. 제어권을 가지고있는 함수가 결과를 반환할 때 까지 제어권을 가지고 있다가 "제어권과 결과값"을 "같이" 전달하는 것이 Block 방식입니다.

 

Non-Block 방식은

  1. 호출자가 똑같이 함수를 호출하면서 제어권을 호출되는 함수에게 넘기지만
  2. 논블락 방식은 이 제어권을 결과값이 나올 때 까지 가지고있지않고
  3. 호출된 함수가 바로, 호출자에게 제어권을 다시 넘기는 방식입니다.
  4. 따라서 호출자결과를 기다리지 않고 다음 함수에게 제어권을 넘기면서, 제어권이 결과와는 의미가 없는 방식이 논블락 방식입니다.

 

 


Synchronous (동기화) 와 Asynchronous (비동기화)

👏🏻 동기화와 비동기는, 시간의 관점에서 이를 바라보는 것 입니다.

 

Synchronuous란 (동기화)

Synchronous = Syn(함께) + Chrono(시간)
  • 어떤 대상들의 시간이 일치하는 가, 즉 같은 시간대를 가져가서 같은 결과(데이터)를 가지고있는가
  • ex)
  • 함수를 순차적으로 실행시켜 데이터를 맞춘다.
  • 제어권의 반환과 결과값의 반환의 시간을 맞춘다.

 

Asynchronou란 (비동기화)

Asynchronou = A(부정형) + Synchronous
  • 시간을 맞추지 않음

👏🏻 즉, 정리하자면 

  • 호출된 함수의 수행 결과 및 종료를 호출한 함수가(호출된 함수뿐 아니라 호출한 함수도 함께) 신경 쓰면 Synchronous
  • 호출된 함수의 수행 결과 및 종료를 호출된 함수 혼자 직접 신경 쓰고 처리한다면(as a callback fn.) Asynchronous 

 


Block 과 Synchronous 의 차이 & Non-block 과 Asychronous의 차이

결과는 같아보이지만, 둘 모두 추상적인 개념, 보는 관점의 차이에 따라서, 부르는 용어가 다른 것
  • 블록과 논블록은 제어권의 관점에서 바라보고
  • 동기와 비동기는 시간의 관점에서 바라본다.

 

 

 

Non-blocking & Synchronous

Non-block 이지만, 동기화인 상황 예시
동기화 비동기 / 블락과 논블락은 같은 개념이기 아니기 때문에, 위와같은 경우가 존재합니다!!

 

함수가 실행되고, 결과가 들어오지 않은 상태에서 제어권을 다시 호출자에게 넘기지만,

호출자가 다른 업무를 볼 수 있는 Non-Blocking 한 상황이지만, 다시 호출한 함수에게 결과값이 나왔는지 주기적으로 말하면서(Context Switching이 발생) 결과값이 나왔을 때, 그 결과값을 이용하는 상황인 것 이다!

ex) Java Future 함수

 

 

 

 

*참고 및 출처



이건 세미나 잘효

Spring_외부API통신(WebClient).pptx
2.03MB

반응형