✔︎ Blocking & Non-blocking
Block과 non-block의 차이는 호출된 함수가 호출한 함수에게 제어권을 건네주는 유무의 차이
Blocking VS Non-Blocking
함수 A, 함수 B → 함수 A안에서 함수 B가 호출 된다
Blocking
함수 B는 내 할 일을 다 마칠 때까지 제어권을 가지고 있는다. A는 B가 다 마치 때까지 기다려야 한다.
Non-Blocking
함수 B는 할 일을 마치지 않았어도 A에게 제어권을 바로 넘겨준다. A는 B를 기다리면서도 다른 일을 진행할 수 있다.
✔︎ Synchronous & Asynchronous
호출한 함수가 결과에 신경을 쓰는지 호출된 함수가 결과에 신경을 쓰는지
Synchronous VS Asynchronous
함수 A, 함수 B → 함수 A안에서 함수 B가 호출 된다
Synchronous
- 메소드를 실행시킴과 동시에 반환 값이 기대되는 경우
- 함수 A는 함수 B가 일을 하는 중에 기다리면서, 현재 상태가 어떤지 계속 체크
Asynchronous
- 메소드를 실행시킴과 동시에 반환 값이 기대되지 않는 경우
- 함수 B의 수행 상태를 B 혼자 직접 신경쓰면서 처리(Callback)
- 비동기는 호출시 callback을 전달하여 작업의 완료 여부를 호출한 함수에게 답하게 된다(Callback이 오긴 전까지 호출한 함수는 신경쓰지 않고 다른 일 한다)
✔︎ 참고