✔️ 동기와 비동기
Blocking과 Non-Blocking
- 호출된 함수(B)가 호출한 함수(A)에게 제어권을 건네주는 유무의 차이
- Blocking은 B가 자신의 할 일을 다 마칠 때까지 제어권을 가지고 있으므로 A는 B의 일이 다 마칠 때까지 기다려야 함
- Non-Blocking은 B가 할 일을 마치지 않았어도 A에게 바로 제어권을 넘겨주므로 B의 일을 기다리면서 A의 일을 진행할 수 있음
- 즉, 호출된 함수에서 일을 시작할 때 바로 제어권을 넘겨주느냐, 할 일을 마치고 넘겨주느냐에 따라 나뉨
Synchronous와 Asynchronous
- 호출된 함수(B)와 호출한 함수(A)의 동시성 유무의 차이
- Synchronous은 A가 B의 일을 기다리면서 현재 상태가 어떤지 계속 체크
- Asynchronous는 B의 수행 상태를 B 혼자 신경 쓰면서 처리한 후 A에게 Callback을 전달하여 작업의 완료 여부를 전달
- 위의 네 가지를 조합하여 4가지 경우를 만들 수 있음
- Blocking & Synchronous : A는 B의 일을 마칠 때까지 계속 체크하면서 기다림
- Blocking & Asynchronous : A는 B의 Callback이 전달될 때까지 기다림
- Non-Blocking & Synchronous : A는 다른 일을 하면서 B의 현재 상태를 계속 체크
- Non-Blocking & Asynchronous : A는 Callback이 전달될 때까지 다른 일을 함
'Tech Interview > Network' 카테고리의 다른 글
[Network] 목차 (0) | 2024.01.27 |
---|---|
[Network] I/O (0) | 2024.01.27 |
[Network] 로드 밸런싱 (0) | 2024.01.27 |
[Network] 암호화 (0) | 2024.01.27 |
[Network] Socket (0) | 2024.01.24 |