동기(Synchronous) vs 비동기(Asynchronous)
동기(Synchronous)

*Thread1
이 작업을 시작 시키고, Task1
이 끝날 때 까지 기다렸다가 Task2
를 시작합니다.*
- 작업 요청을 했을 때 요청의 결과값(return)을 직접 받는 것이다.
- 요청의 결과값이 return값과 동일하다.
- 호출한 함수가 작업 완료를 신경 쓴다.
비동기(Asynchronous)

*Thread1
이 작업을 시작 시키고, 완료를 기다리지 않고, Thread1
은 다른 일을 처리할 수 있다.*
- 작업 요청을 했을 때 요청의 결과값을 간접적으로 받는 것이다.
- 요청의 결과값이 return 값과 다를 수 있다.
- 콜백을 통한 처리가 비동기 처리라고 할 수 있다.
- 호출된 함수(callback 함수)가 작업 완료를 신경 쓴다.
Blocking vs Non-Blocking
blocking 과 non-blocking은 주로 I/O 의 읽기, 쓰기에서 사용된다.