HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🤩
개발
/강의 내용 정리/우아한 형제들 특강/
Blocking vs Non-Blocking, Sync vs Async

Blocking vs Non-Blocking, Sync vs Async

Blocking vs Non-Blocking

  • Blocking : 해당 작업을 다른쪽에서 처리하고 돌려줄 때까지 클라이언트는 다른 작업을 하지 못함
  • Non-Blocking : 해당 작업을 다른 쪽에서 처리하는 동안 클라이언트는 기다리든 다른 작업을 하든 상관없음.
  • 관심이 제어권에 있음

Sync vs Async

  • Sync : 클라이언트에서 다른쪽에서 작업이 처리되고나서 받은 데이터를 가지고 바로 처리함
  • Async : 클라이언트에서 다른쪽에서 작업이 처리된 결과에 대해 큰 비중 두지 않고 결과가 돌아 오더라도 그 상황에 대해 처리를 할 수도 안할 수도 있음(해야할 일을 적어서 보내줌. 언젠가 처리하면 됨)
  • 동기와 비동기는 결과와 순서에 관심이 있음
notion image

Blocking/Sync

  • 다른 작업이 수행되는 동안 현재 작업은 멈추게 됨
  • Sync의 관점은 결과의 처리. 결과를 반환하면 해당 업무를 바로 처리하게 됨
  • System.in 의 동작 방식이 이와 같음

Non-blocking / Sync

  • 다른 작업이 수행되는 동안 자신의 작업을 수행할 수 있음
  • 그러나 결과에 관심이 있기 때문에 결과가 나왔는지 계속 확인하게 됨
  • Blocking/Sync와 큰 차이가 없음
  • 예 : 게임에서 맵을 불러올 때 그 맵의 로딩이 어느정도 진행됐는지를 보여줘야 할 때?

Blocking/Async

  • 굳이 사실 필요하지 않은 조합. Async인데 기다리고 있을 필요가 없는것
  • 코드 구현 잘못했을 때 이와 같은 상황이 발생할 수 있음

Non-blocking/Async

  • 자신이 하던 작업을 다른 작업이 시작하더라도 중단하지 않음
  • Async는 결과가 돌아오더라도 바로 처리하는 것이 아닌 언제든지 처리하는 것
  • 예시 : 자바스크립트에서 api요청하고 나서 콜백을 통해 추가적인 작업을 처리하는 경우