
📍 동기와 비동기
동기 ; Synchronous
동기는 작업을 순차적으로 실행하며 한 작업이 완료될 때까지 다음 작업은 대기한다.
한 작업이 완료될 때까지 대기하는 이유는 결과값 혹은 순서가 중요하기 때문.
비동기 ; Asynchronous
비동기 처리는 병렬적으로 실행하며 여러 작업을 동시에 처리할 수 있는 방식이다.
다른 작업의 완료를 대기하지 않아도 되며, 결과의 순서를 예측하기 어렵다.
그래서 끝났을 때 결과 이벤트 처리를 위해 콜백함수를 사용한다.
피호출 함수의 작업이 완료되어도 호출 함수가 결과값에 대해 바로 처리하지 않아도 된다.
비동기 프로그래밍의 방법
- 멀티쓰레드
- 논블로킹 IO
비동기와 논블로킹 관계성에 대해 궁금해졌는데 비동기라는 개념이 더 크게 잡혀있다.
동기와 비동기는 결과를 돌려주었을 때
결과값과 순서에 관심이 있는지 아닌지로 판단할 수 있다.
📍 블로킹과 논블로킹
블로킹; Blocking
A함수가 B함수를 호출하면 A함수는 B함수가 끝났을 때까지 기다렸다가 B함수가 완료되면 A함수를 실행하는 것이다.
제어권을 다른 작업에게 넘겨주는 것이다.
논블로킹 ; Non-Blocking
A함수가 B함수를 호출하여도 A함수의 작업을 실행한다.
제어권을 그대로 자신이 가지고 있는 것이다.
블로킹과 논블로킹은 다른 주체가 작업할 때 자신의
제어권이 있는지 없는지로 판단할 수 있다
참고
https://velog.io/@nittre/블로킹-Vs.-논블로킹-동기-Vs.-비동기
https://poloopy.tistory.com/24
'CS' 카테고리의 다른 글
| 동기 vs 비동기 / 블로킹 vs 논블로킹 실습 코드로 이해하기 (0) | 2025.11.13 |
|---|---|
| MSA 환경에서 서비스별 Swagger UI를 GitHub Pages로 배포하기 (0) | 2025.09.22 |