Skip to main content

Command Palette

Search for a command to run...

동기/비동기 and 블록킹/논블록킹 정리

프로그래밍 세계에서 제일 혼란스러운 개념 중 하나를 이해해보자

Updated
2 min readView as Markdown
동기/비동기 and 블록킹/논블록킹 정리
T

Software engineer for web tech. Interested in sustainable growth as software engineer.

분명히 여러번 공부했음에도 자꾸 까먹는 동기/비동기와 블록킹, 논블록킹의 차이! 한번 제대로 정리해보고 싶어서 글을 정리해봤습니다.

1. 동기(Synchronous)와 비동기(Asynchronous):

  • 동기(Synchronous): 요청을 보낸 후, 그 요청의 결과가 나올 때까지 기다린 다음에야 다음 동작을 수행합니다. 예를 들면, 커피 주문하고 바로 커피 받을 때까지 기다리는 것입니다. 기다리면서 보통 핸드폰을 할 수 있죠.

  • 비동기(Asynchronous): 요청을 보내고 결과를 기다리지 않고 바로 다음 동작을 수행하는 것입니다. 결과는 나중에 알려줍니다. 예를 들면, 커피 주문하고 번호표 받고 다른 일 마치고 왔더니, 커피 나와있으면 받는 것입니다.

2. 블록킹(Block)과 논블록킹(Non-Block):

  • 블록킹(Block): 어떤 작업을 요청할 때 그 작업이 끝날 때까지 계속 기다립니다. 다른 일을 할 수 없어서 마치 막혀 있는 것처럼 느껴집니다. 커피 주문을 하고, 커피가 나올때까지 딱 집중하고 기다리고 있는겁니다.

  • 논블록킹(Non-Block): 작업을 요청해도 그 결과를 기다리지 않고 다른 일을 할 수 있습니다. 작업이 끝나면 나중에 결과를 알려줍니다. 커피 주문하고, 옆가게 가서 빵도 사올 수 있는 것입니다.

간단하게 말하면, 동기/비동기는 '작업 완료를 언제 확인하느냐'에 초점을 맞추고, 블록킹/논블록킹은 '요청 후 대기하는 동안 다른 작업을 할 수 있는지'에 대한 것입니다. 이 둘은 비슷해 보이지만, 실제로는 조금 다른 개념입니다. 동기/비동기는 결과의 완성과 관련된 것이고, 블록킹/논블록킹은 프로세스의 상태(막히거나 막히지 않거나)와 관련된 것입니다.

웹 개발에서 비동기 방식을 많이 사용하는데, 이유는 서버에 요청을 보낸 후 응답을 기다리는 동안에도 사용자는 페이지에서 다른 작업을 계속 할 수 있기 때문입니다. 예를 들어, 웹페이지에서 데이터를 불러오는 동안 사용자가 다른 버튼을 클릭하거나 스크롤을 할 수 있습니다. 이게 바로 비동기 방식의 매력이라고 할 수 있습니다.

간단 정리

동기/비동기는 작업 단위에 대한 개념, 블록킹/논블록킹은 프로세스 단위에 대한 개념입니다.
비유적으로 보면, 커피를 주문할 때 동기/비동기는 커피를 기다리는지 여부에 대한 것, 블록킹/논블록킹은 커피 기다리는 동안 딴짓을 할수 있는지 여부에 대한 것입니다.

More from this blog

프론트엔드는 경계를 다루는 직무가 되어간다

프론트엔드는 원래도 복잡했습니다. 브라우저마다 다른 렌더링, 상태 동기화, 성능, 접근성 — 화면 하나 제대로 만드는 데 신경 쓸 게 늘 많았습니다. 다만 그 복잡함은 대체로 한 방향을 향했습니다. 이 UI를 어떻게 만들까, 상태를 어떻게 관리할까, 클릭하면 무엇이 바뀌어야 할까. 그런데 요즘 질문의 축이 하나 더 늘고 있습니다. 이 UI는 서버에서 먼저

Jul 20, 20266 min read

AI가 코드를 짜는 시대, 나는 리뷰를 못 따라가고 있었다

솔직히 말하면, 요즘 PR을 제때 리뷰하지 못하고 있습니다. 개발 속도는 빨라졌는데 리뷰 속도는 그대로입니다. 예전엔 하루 이틀이면 처리하던 게 이제는 며칠씩 밀립니다. 처음엔 제가 게을러진 탓인가 싶었습니다. 돌아보니 그게 아니었습니다. AI 도구를 쓰면서 코드가 쏟아지는 속도가 달라졌습니다. 한 사람이 만들어내는 코드 양이 예전과 비교가 안 됩니다. P

Mar 18, 20263 min read
AI가 코드를 짜는 시대, 나는 리뷰를 못 따라가고 있었다

테드풀의 한 입 지식

78 posts

가볍게 정리하는 기록들입니다.