아래는 동기(Synchronous)와 비동기(Asynchronous), 그리고 블럭(Blocking)과 넌블럭(Non-blocking) 에 대해 설명하는 그림이다.
Blocking이 곧 Synchronous 와 같고 Non-blocking 이 곧 Asynchronous 와 같은 개념으로 잘못 이해할 수 있다.
- 동기 (Synchronous) 와 비동기 (Asynchronous)
- 비동기 (Asynchronous) 는 함께 시간을 맞추지 않는 것이다.
- 동기 (Synchronous)
- A 와 B 가 시작시간 또는 종료시간이 일치하면 동기
- A 가 끝나는 시간과 B 가 시작하는 시간이 같으면 동기
- 호출된 함수의 수행 결과 및 종료를 호출한 함수가(호출된 함수뿐 아니라 호출한 함수도 함께) 신경 쓰면 동기 (Synchronous)
- 호출된 함수의 수행 결과 및 종료를 호출된 함수 혼자 직접 신경 쓰고 처리한다면(as a callback func) 비동기 (Asynchronous)
- 블럭 (Blocking) 과 넌블럭 (Non-blocking)
- 동기 , 비동기와는 관점이 다르다.
- 내가 직접 제어할 수 없는 대상을 상대하는것이다. (제어권)
- 호출된 함수가 자신이 할 일을 모두 마칠 때까지 제어권을 계속 가지고서 호출한 함수에게 바로 돌려주지 않으면 블럭 (Blocking)
- 호출된 함수가 자신이 할 일을 채 마치지 않았더라도 바로 제어권을 건네주어(return) 호출한 함수가 다른 일을 진행할 수 있도록 해주면 넌블럭 (Non-blocking)
'슬슬의 공부' 카테고리의 다른 글
[프로그래머스] 카펫 (0) | 2023.01.24 |
---|---|
[프로그래머스] 분수의 덧셈 (0) | 2023.01.24 |
[MSA] EDA (Event Driven Architecture) (0) | 2023.01.17 |
[React] React JS/Next.js 템플릿 디자인 적용 (0) | 2023.01.17 |
쿠키 / 세션 인증 취약점 (0) | 2021.03.18 |