동기 비동기에 관한 레퍼런스를 찾아보던 중 블럭과 논블럭 단어가 계속 등장해서 정리해보았다.
블록 | 논블록
블럭
- 함수 호출 시 모든 로직을 끝마치고 리턴
- 끝나기 전까지 다른 함수 호출 불가
- 제어 권한은 작업이 끝날 때 가지 넘어가지 않음
논블럭
- 함수 호출 시 로직 수행 중에 리턴
- 제어 권한은 작업이 완료되기 전에 넘어감
동기 | 비동기
동기
- 두가지 이상의 로직이 순차적으로 실행
- 두가지 이상의 로직은 인과관계가 있어야 함
- 호출된 함수 리턴 시간 = 결과 반환 시간
비동기
- 두가지 이상의 로직이 비순차적으로 실행
- 호출된 함수 리턴 시간 != 결과 반환 시간
동기 = 블록, 비동기 = 논블록 ?
결론적으로 같은 개념이 아니다. 블럭과 논블럭은 I/O에 중점을 두지만 동기와 비동기는 행위에 기준을 둔 추상적인 개념이다.
참고 레퍼런스 - [하마]이승현 - 블럭,논블럭,동기,비동기 이야기