Blocking & Non-blocking
- 처리하는 작업이 전체적인 작업 흐름을 막냐/안 막냐에 대한 관점
👉 제어권이 누구한테 있는 지가 중요함
개념
- Blocking
👉 자신의 작업을 진행하다 다른 작업이 시작되면
다른 작업이 끝날 때까지 기다리다 자신의 작업을 다시 시작하는 것 - Non-blocking
👉 다른 작업에 관련없이 자신의 작업을 진행하는 것
블로킹의 단계
- A함수가 B함수를 호출함
👉 제어권 : A to B - B가 함수 실행함. A함수는 멈춤
👉 제어권: B - B함수가 끝남. 다시 A가 함수 실행
👉 제어권: B to A
논블로킹의 단계
- A함수가 B함수 호출함
👉 제어권 : A - B함수가 실행, 이때 A도 실행중임
👉 제어권: A
더 깊이
동기 & 비동기
- 함수 A가 B를 호출한 뒤, 함수 B의 리턴값을 계속 확인하며 신경쓰는 것(Synchronous)/쓰지 않는 것(Asynchronous)
Sync-Blocking
- 함수 A가 함수 B의 리턴값을 필요로 함
👉 제어권: A to B - B의 작업이 끝남, 결과를 리턴해줌
👉 제어권: B to A
Sync-Nonnlocking
- 함수 A가 함수 B 호출
👉 제어권: A - 함수 A 계속 실행, B도 실행됨
👉 제어권: A - 함수 B가 실행을 완료했는 지 확인
👉 제어권: A - 리턴값 받음
👉 제어권: A
Async-Nonnlocking
- A 함수가 B 호출(콜백함수를 줌, A to B)
👉 제어권: A - B 실행, A도 계속 실행
👉 제어권: A - B작업 끝남
👉 제어권: A - B에서 A가 준 콜백함수 실행
👉 제어권: A
Async-Blocking(마주치기 쉽지 않음)
- A함수는 B함수호출( 리턴 값 신경 X, 콜백함수 보냄, A to B )
👉 제어권: A to B - 관심이 없음에도 제어권이 넘어갔기에 A함수 대기
👉 제어권: B - B끝남(콜백함수 호출)
👉 제어권: B to A - A작업 다시 재개
👉 제어권: A
'CS' 카테고리의 다른 글
ep 05-2. Primary index vs Secondary index /Composite (0) | 2022.12.03 |
---|---|
ep 05-1. index (0) | 2022.12.02 |
로드 밸런싱 (0) | 2022.11.20 |
TLS/SSL HandShake (0) | 2022.11.20 |
HTTP GET vs. POST (0) | 2022.11.13 |