아래의 글 순서대로 읽으시면 해당 글을 이해하시는데 족흠 도움이 됩니다 🙏
⚙️ 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 방식은
- 호출자가 함수를 호출하면
- 호출된 함수에 제어권이 이동되면서 함수의 로직을 실행하게 되고
- 제어권을 가지고있는 함수가 결과를 반환할 때 까지 제어권을 가지고 있다가 "제어권과 결과값"을 "같이" 전달하는 것이 Block 방식입니다.
Non-Block 방식은
- 호출자가 똑같이 함수를 호출하면서 제어권을 호출되는 함수에게 넘기지만
- 논블락 방식은 이 제어권을 결과값이 나올 때 까지 가지고있지않고
- 호출된 함수가 바로, 호출자에게 제어권을 다시 넘기는 방식입니다.
- 따라서 호출자는 결과를 기다리지 않고 다음 함수에게 제어권을 넘기면서, 제어권이 결과와는 의미가 없는 방식이 논블락 방식입니다.
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 함수
*참고 및 출처
- 우님의 테코톡
- 기가막힌 예시 : https://musma.github.io/2019/04/17/blocking-and-synchronous.html
이건 세미나 잘효
'🔥 공대생은 성장 중 > 세미나' 카테고리의 다른 글
2024 항해 데브랩 후기 (0) | 2024.09.02 |
---|---|
[한빛앤 MSA 세미나] 모니터링 | 강동호 (0) | 2024.08.20 |
[한빛앤 MSA 세미나] 서비스 장애 잘 이해하고 대비하기 | 박순영 (0) | 2024.06.21 |
[Restful api 란] - 진짜 Rest API 란 무엇이고 어떻게 써야하는 걸까? (2) | 2022.07.21 |