Blocking vs Non-Blocking, Sync vs Async의 설명

Y39·2023년 4월 8일
0

toBeProgrammer

목록 보기
86/88

Blocking vs Non-Blocking

Blocking

: 자신의 작업을 진행 → 다른 작업이 시작 → 기다림

Non-Blocking

: 다른 작업에 관련없이 자신의 작업을 함

⇒ 자신의 일에 대한 제어권을 자신이 갖고 있는지

Sync vs Async

Synchromous

: 동시에 수행하거나, 동시에 끝나거나 → 끝나는 동시에 시작

⇒ 결과가 나오는 시점이 중요 [순서대로]

Asynchromous

: 시작과 종료가 일치 않지 않음 → 시작과 끝나는 것은 관계없음

⇒ 결과가 나오는 시점 상관없음 [순서 없음]

Sync - Blocking

Blocking Synchromous

  • A 작업 중 → B에게 작업 전달
  • B 작업중 → A는 작업 멈추고 B를 기다림
  • B 완료 → A는 B의 결과로 바로 작업 시작

Non-Blocking Synchromous

  • A 작업중 → B에게 작업 전달
  • B 작업중 → A는 자기 작업을 하러 돌아감
  • A는 B에게 작업 완료 됐는지 계속 물어봄
  • B 완료 → A는 B의 결과로 바로 작업 시작

Blocking Asynchromous

  • A 작업중 → B에게 작업 전달
  • B 작업중 → A는 작업 멈추고 B를 기다림
  • B 완료 → A는 B의 결과로 작업 시작
  • 이게 뭔 꼴인가?
    • 개발자의 실수 또는 기타의 이유로 이런식으로 구현됨

Non-Blocking Asynchromous

  • A 작업중 → B에게 작업 전달
  • B 작업중 → A는 자기 작업하러 감
  • B 완료 → A에게 B 결과 전달
  • A는 자기 작업 마치고 B 결과를 확인하고 작업
profile
System.out.print("Bold")

0개의 댓글