
동기(synchronous)
- 데이터 처리 모델에서 데이터의 요청&결과가
한번에 일어나는 과정
요청을 진행 했으면 응답이 일어나기까지 다른 요청 및 행위 시도 불가
- 장점: 설계적으로 직관적
- 단점: 어떤식으로든 응답이 와야 다음 행위 가능
비동기(Asynchronous)
- 데이터 처리 모델에서 데이터의 요청&결과가
한번에 일어나지 않는 관정
요청 시 응답 대기 필요 X
요청 이후 다른 요청 및 행위 시도 가능
- 장점: 각기 다른 응답시간을 가지는 요청들에 대한 처리가 유연함
- 단점: 복잡할 설계 과정
결론
- 비동기와 동기의 차이점은 처리된 응답 결과의 위치가 다른 점이다.
- 각 작업이 주고받는 데이터의 상태와 흐름의 제어방식
블로킹(Blocking)
- 특정 작업이 실행 요청을 받아 실제로 수행되는 동안, 다른 작업은 진행 불가 (대기 상태)
호출 함수가 자신의 작업을 끝낼때까지 제어권 보유, 이후 호출 함수 대기상태 제어
- 장점: 작업이 순차적으로 이루어져 작업 흐름을 쉽게 이해 가능
- 단점: 블로킹이 이루어지는 자원을 효율적으로 이용하지 못함 (오래 걸릴수록 비효율성 ↑)
논 블로킹(Non Blocking)
- 특정 작업이 이미 수행중이라도, 상관없이 바로 다음 작업 수행 가능
호출 함수가 바로 반환하여 이후 호출 함수에게 제어권을 주고 다른 작업 수행
- 장점: 자원을 낭비하지 않아 균일하고 효율적으로 이용 가능
- 단점: 업무흐름이 굉장히 복잡해짐
결론
자주 사용되는 형태

- 호출된 함수가 호출한 함수에게 제어권을 바로 주느냐, 안주느냐의 차이
비동기/동기 와 블로킹/논블로킹 의 차이?
- 관심사(특정 작업의 행위가 일어나는 시점)의 차이
- 데이터의 흐름제어와 작업 수행시기를 제어하는 것은 별개의 문제이기 때문에
- 논블로킹 작업을 하던 도중 공유 데이터의 일관성 유지를 위해 동기식 작업 발생 有
- 비동기 작업 진행 도중 블로킹 발생 有