동기/비동기는 기술적으로 구분되지 않으며, 추상적인 구분(행위) 에 대한 이야기임.
동기(Synchronous) : 현재 작업의 응답이 발생한 뒤에 다음 작업에 대한 요청이 이루어지며,
이 과정의 타이밍이 일치하는 것 (순차적)
비동기(Asynchronous) : 현재 작업의 요청에 대한 응답이 마무리 되지 않아도 다음 작업에 대한
요청이 이루어질 수 있음. (타이밍이 일치하지 않음, 비 순차적)
(+ Callback)
블록/논블록은 기술적으로 명확히 구분된다.
종류 | 설명 |
---|---|
블럭(Block) | 호출된 작업이 마무리 될 때 까지 제어권을 가지고서 return 하지 않는 것 |
논블럭(Non-Block) | 호출된 작업이 끝까지 마무리되지 않았더라도 제어권을 넘겨주어 다른 작업의 시작이 가능 |
동기(Synchronous) | 호출된 작업이 종료되고, A작업의 종료와 B작업의 시작을 모두 신경 씀 |
(요청과 결과가 동시에 일어남) | |
비동기(Asynchronous) | 호출된 작업이 수행의 시작과 완료까지의 과정을 오로지 혼자만 신경쓰고 처리함 |
(요청과 결과가 동시에 일어나지 않음) |
참고 :
https://evan-moon.github.io/2019/09/19/sync-async-blocking-non-blocking/