Asynchronous


- Synchronous VS Asynchronous
> - **두 가지 이상의 Procedure**(메서드, 작업, 처리 등)과 이를 처리하는 시간으로 구분한다.
> - **Synchronous**: 호출된 함수의 리턴하는 시간과 결과를 반환하는 시간이 일치하는 경우
> - **Asynchronous**: 호출된 함수의 리턴하는 시간과 결과를 반환하는 시간이 일치하지 않는 경우
- Blocking VS Non-Blocking
> - **호출되는 Procedure가 직접 제어할 수 없는 경우** 이를 구분할 수 있다.
> - **Blocking**: 직접 제어할 수 없는 대상의 작업이 끝날 때까지 기다려야 하는 경우
> - **Non-Blocking**: 직접 제어할 수 없는 대상의 작업이 완료되기 전에 제어권을 넘겨주는 경우


개념적인 부분이라 어떤 방식으로든 구현할 수 있다
> non blocking async as call nd conversation
> async is message chat
> sync is conversation
> thread is person
> js async is single person message chat and conversation
> to wait or not to wai


> [백엔드 개발자들이 알아야할 동시성 2 — 블로킹과 논블로킹, 동기와 비동기](https://choi-geonu.medium.com/백엔드-개발자들이-알아야할-동시성-2-블로킹과-논블로킹-동기와-비동기-e11b3d01fdf8)

> [Sync VS Async, Blocking VS Non-Blocking](https://velog.io/@codemcd/Sync-VS-Async-Blocking-VS-Non-Blocking-sak6d01fhx)





