DongSup
dev's gait
DongSup
전체 방문자
오늘
어제
  • 분류 전체보기 (71)
    • flask (13)
    • iOS (11)
    • python (22)
    • CS (21)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 첫글
  • 언어공부
  • 한걸음
  • 파이썬
  • Swift

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
DongSup
CS

Blocking, NonBlocking + Synchronous, Asynchronous

Blocking, NonBlocking + Synchronous, Asynchronous
CS

Blocking, NonBlocking + Synchronous, Asynchronous

2022. 11. 24. 18:34

 

 

 

 

Blocking

 

자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 

다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것

 

 

Non-Blocking

 

다른 주체의 작업에 관련없이 자신의 작업을 하는 것

 

 


 

 

블로킹과 논블로킹 구별

 

 

  • 처리되어야 하는 작업이, 전체적인 작업 흐름을 막느냐 안막느냐에 대한 관점

  • 제어권이 누구한테 있느냐

 

 

 

블록킹

 

Blocking

A 함수가 B 함수를 호출하면, 제어권을 A가 호출한 B 함수에 넘겨줌

 

 

  1. A함수가 B함수를 호출하면 B에게 제어권을 넘긴다.

  2. 제어권을 넘겨받은 B는 열심히 함수를 실행한다.
    A는 B에게 제어권을 넘겨주었기 때문에 함수 실행을 잠시 멈춘다.

  3. B함수는 실행이 끝나면 자신을 호출한 A에게 제어권을 돌려준다.

 

 

 

논블록킹

 

Non-Blocking

A 함수가 B 함수를 호출해도 제어권은 그대로 자신이 가지고 있음

 

 

  1. A함수가 B함수를 호출하면, B 함수는 실행되지만, 제어권은 A 함수가 그대로 가지고 있는다.

  2. A함수는 계속 제어권을 가지고 있기 때문에 B함수를 호출한 이후에도 자신의 코드를 계속 실행한다.

 

 

 

즉, 블록킹과 논블록킹은 프로세스의 유휴 상태에 대한 개념으로

동기와 비동기라는 개념과 연관 지을 수 있는데,

서로 연관 짓는 것은

단지 조합하여 사용되기 때문이라는 것을 인지해야함

 

그럼 동기와 비동기란?

 

 


 

 

Synchronous

 

요청이 들어온 순서에 맞게 하나씩 처리하는 것

 

 

Asynchronous

 

하나의 요청이 끝나기도 전에, 다른 요청을 동시에 처리할 수 있는 것

 

 


 

 

동기와 비동기 구별

 

 

  • 처리해야 할 작업들을 어떠한 흐름으로 처리 할 것인가에 대한 관점

 

제어권이란? 

자신(함수)의 코드를 실행할 권리 같은 것

(제어권을 가진 함수는 자신의 코드를 끝까지 실행한후, 자신을 호출한 함수에게 돌려줌)

 

결과값을 기다린다는 것?

A 함수에서 B 함수를 호출했을 때, A 함수가 B 함수의 결과값을 기다리느냐의 여부를 의미

 

 

 

 

동기

 

Synchronous

결과를 기다림 (=함수 A가 함수 B를 호출한 뒤, 함수 B의 리턴값을 계속 확인하면서 신경쓰는 것)

 

 

 

 

비동기

 

Asynchronous

결과를 기다리지 않음(=함수 A가 함수 B를 호출한 후로 함수 B의 작업 완료 여부에는 신경쓰지 않음)

 

 

함수 A가 함수 B를 호출할 때 콜백 함수를 함께 전달해서,

함수 B의 작업이 완료되면 함께 보낸 콜백 함수를 실행

 

 


 

 

조합

 

 

Sync-Blocking

 

 

결과를 기다림 + 제어권을 돌려줄때까지 기다림

 

요청자는 결과가 나올때까지 계속 확인함, 요청받은 함수의 작업이 끝나야 제어권을 돌려받음

 

 

 

Sync-Nonblocking

 

 

결과를 기다림 + 제어권을 주지 않고, 자신의 코드를 계속 실행

 

제어권을 주지 않고 자신의 코드만 실행하고 있지만,

A 함수는 B 함수의 리턴값이 필요하기 때문에, B 함수가 함수 실행을 완료했는지 계속해서 조회

 

 

 

Async-Nonblocking

 

 

결과를 기다리지 않음 + 제어권을 주지 않고, 자신의 코드를 계속 실행

 

제어권을 넘기지않고 계속 작업을 실행, B 함수를 호출할 때 콜백함수를 함께 보내서

B 함수는 자신이 작업이 끝나면 A 함수가 준 콜백 함수를 알아서 실행

 

 

 

Async-blocking

 

 

결과를 기다리지 않음 + 제어권을 돌려줄때까지 기다림

 

A 함수는 B 함수의 리턴값에 신경쓰지 않고 콜백함수를 보냄,

B 함수의 작업에 관심이없지만 A 함수는 B 함수에게 제어권을 넘김,

때문에 A 함수는 B 함수의 작업이 끝나기를 기다려야함

 

 

 


 

Reference Path

 

 

👩‍💻 동기 & 비동기 / 블로킹 & 논블로킹 💯 완벽 이해하기

동기 & 비동기 vs 블로킹 & 논블록킹 개념 이 개념들을 처음 접하거나 컴퓨터 공학에 대해 잘 모르는 사람은 이 개념들이 서로 뭔가 연관이 있는 것으로 오해하기 쉽다. 아무래도 동기와 블록킹,

inpa.tistory.com

 


'CS' 카테고리의 다른 글

마이크로서비스 아키텍처와 모놀리식 아키텍처  (0) 2022.11.27
비즈니스 로직 Business Logic  (0) 2022.11.27
로드밸런싱 Load Balancing  (0) 2022.11.20
TLS/SSL Handshake  (0) 2022.11.20
GET과 POST 방식  (0) 2022.11.13
  • Blocking
  • Non-Blocking
  • 블로킹과 논블로킹 구별
  • 블록킹
  • 논블록킹
  •  
  • Synchronous
  • Asynchronous
  • 동기와 비동기 구별
  • 동기
  • 비동기
  •  
  • 조합
  • Sync-Blocking
  • Sync-Nonblocking
  • Async-Nonblocking
  • Async-blocking
'CS' 카테고리의 다른 글
  • 마이크로서비스 아키텍처와 모놀리식 아키텍처
  • 비즈니스 로직 Business Logic
  • 로드밸런싱 Load Balancing
  • TLS/SSL Handshake
DongSup
DongSup

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.