Blocking VS. Non-Blocking

JH·2022년 11월 27일
0

Computer Science

목록 보기
8/9

Sync/Async

결과를 돌려주었을 때 순서, 결과에 관심있는지 여부로 나눌 수 있다.

Synchronous

  • 작업이 끝나는 동시에 시작한다.
  • 작업의 결과를 직접 받는다.

Asynchronous

  • 작업이 끝나지 않아도 시작한다.
  • 작업의 결과를 간접적으로 받는다.

Blocking/Non-Blocking

다른 주체가 작업할 때, 자신에게 제어권이 있는지 없는지 여부로 나눌 수 있다.

자신의 작업(A), 다른 작업(B)

Blocking

A를 진행하다가 B의 작업이 시작되면 B가 끝날 때까지 기다렸다가 A를 시작하는 것

  1. 유저가 커널에게 요청
  2. 커널은 유저가 입력할 때까지 대기
  3. 입력이 끝나면 유저에게 결과 전달

Non-Blocking

A를 진행하다가 B에 관련없이 A를 하는 것

1. 유저가 커널에게 요청
2. 커널은 입력 여부와 관계없이 결과 전달
3. 유저는 다른 작업 수행 & 커널은 입력 올 때까지 계속 확인
4. 입력하면 커널이 유저에게 결과 전달

조합

Blocking/Sync

A는 B가 완료될 때까지 대기, B가 완료되자마자 A가 처리
ex) 자바에서 입력요청

Non-Blocking/Sync

A는 B가 완료될 때까지 A 진행하면서 B의 상태 확인, 완료되면 A가 바로 처리

Blocking/Async

A는 B가 완료될 때까지 대기, B가 완료하면 나중에 처리

Non-Blocking/Async

A는 B가 완료될 때까지 A 진행하면서 B의 상태 확인, B가 완료하면 나중에 처리
ex) 자바스크립트 API 요청 후 콜백하는 경우


https://www.youtube.com/watch?v=oEIoqGd-Sns

profile
매일 한 문제씩 풀기

0개의 댓글

관련 채용 정보