Blocking VS Non-Blocking

5w31892p·2023년 11월 10일

Blocking

  • 요청한 작업을 마칠 때까지 계속 대기
  • 즉시 return
  • return 값을 받아야 끝
  • return 값을 받을 때까지 한 Thread를 계속 사용/대기

Non-Blocking

  • 요청한 작업을 즉시 마칠 수 없다면 즉시 return
  • 즉시 리턴하지 않음
  • 하나의 Thread가 여러 개의 IO를 처리 가능

예시

급하게 알아야 하는 답을 누군가에게 물어봐야하는 상황일 때

  • 전화로 물어봐서 즉답을 얻는다. = 동기 요청처리
  • 이메일로 물어보고 메일 송신을 완료(return)했지만 답은 언제 올지 모른다. = 비동기 요청처리
  • 전화를 했는데 상대방이 너무 바빠 전화를 받지 않음
    전화를 받을때까지 계속 대기 = 동기 + 블록킹
  • 전화를 했는데 안 받음
    끊었다가 나중에 다시 전화함
    계속 반복했다가 어느 순간에 받아서 답을 얻음 = 동기 + 논블록킹

참고 영상


블로킹과 논블록킹은 다른 요청의 작업 처리를 위해 현재 작업을 차단, 대기 하냐 안하냐의 유무
즉, 전체적인 작업 흐름 자체를 막냐 안막냐

파일 읽는 작업을 할 때에
블로킹은 파일을 다 읽을 때 까지 대기
논블로킹은 파일을 다 읽지 않아도 다른 작업 가능

참고
완벽히 이해하는 동기/비동기 & 블로킹/논블로킹
blocking vs non-blocking

0개의 댓글