본문 바로가기
CS

ep 04. Blocking/Non-blocking

by L_SU 2022. 11. 28.

Blocking & Non-blocking

- 처리하는 작업이 전체적인 작업 흐름을 막냐/안 막냐에 대한 관점

👉 제어권이 누구한테 있는 지가 중요함

 

개념

  • Blocking
    👉 자신의 작업을 진행하다 다른 작업이 시작되면
           다른 작업이 끝날 때까지 기다리다 자신의 작업을 다시 시작하는 것
  • Non-blocking
    👉 다른 작업에 관련없이 자신의 작업을 진행하는 것

블로킹의 단계

  1. A함수가 B함수를 호출함
    👉 제어권 : A to B
  2. B가 함수 실행함. A함수는 멈춤
    👉 제어권: B
  3. B함수가 끝남. 다시 A가 함수 실행
    👉 제어권: B to A

논블로킹의 단계

  1. A함수가 B함수 호출함
    👉 제어권 : A
  2. B함수가 실행, 이때 A도 실행중임
    👉 제어권: A

 

더 깊이

 

동기 & 비동기

- 함수 A가 B를 호출한 뒤, 함수 B의 리턴값을 계속 확인하며 신경쓰는 것(Synchronous)/쓰지 않는 것(Asynchronous)

 

Sync-Blocking

  1. 함수 A가 함수 B의 리턴값을 필요로 함
    👉 제어권: A to B
  2. B의 작업이 끝남, 결과를 리턴해줌
    👉 제어권: B to A

Sync-Nonnlocking

  1. 함수 A가 함수 B 호출
    👉 제어권: A
  2. 함수 A 계속 실행, B도 실행됨
    👉 제어권: A
  3. 함수 B가 실행을 완료했는 지 확인
    👉 제어권: A
  4. 리턴값 받음
    👉 제어권: A

Async-Nonnlocking

  1. A 함수가 B 호출(콜백함수를 줌, A to B)
    👉 제어권: A
  2. B 실행, A도 계속 실행
    👉 제어권: A
  3. B작업 끝남
    👉 제어권: A
  4. B에서 A가 준 콜백함수 실행
    👉 제어권: A

 

Async-Blocking(마주치기 쉽지 않음)

  1. A함수는 B함수호출( 리턴 값 신경 X, 콜백함수 보냄, A to B )
    👉 제어권: A to B
  2. 관심이 없음에도 제어권이 넘어갔기에 A함수 대기
    👉 제어권: B
  3. B끝남(콜백함수 호출)
    👉 제어권: B to A
  4. 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