본문 바로가기
개발 만담/헷갈리는 개념

동기식, 비동기식 & 블록킹, 논블록킹

by JHyun0302 2023. 8. 30.
728x90

동기/ 비동기 : `요청한 작업을 순차적으로 수행할건가...` 에 대한 관점

블록킹/논블록킹 : `실행 중인 작업이 완료될 때까지 다른 작업을 대기시킬 건지... 대기하지 않고 실행할지...` 에 대한 관점

 

 

 

 

 

1. 동기(Synchronous) vs 비동기(Asynchronous)

 

Synchronous

  • 작업의 시작과 끝, 그리고 결과 처리가 순차적으로 진행되는 방식
  • 한 작업이 시작되면 해당 작업이 완료될 때까지 다른 작업은 대기

 

 

Asynchronous

  • 작업의 시작과 끝, 그리고 결과 처리가 독립적으로 이루어지는 방식
  • 한 작업이 시작되어도 결과를 기다리지 않고 다른 작업을 수행

 

 

 

 

ex. A, B, C 작업 있을 때

Synchronous : `A → B→ C` 순차 진행

Asynchronous : `C → B→ A` or `A → C→ B`  등  무작위 진행

 


 

 

2.  블로킹(Blocking) vs 논블로킹(Non-blocking)

 

Blocking

  • 호출된 작업이 완료될 때까지 제어권을 호출한 코드에 유지되는 방식
  • 한 작업이 완료되지 않으면 다음 작업을 실행 불가

 

 


Non-blocking

  • 호출된 작업이 완료될 때까지 대기하지 않고, 다른 작업을 실행할 수 있는 방식
  • 작업이 완료되지 않더라도 대기하지 않고 다른 작업을 실행

 

 

ex.  A, B, C 작업 있을 때

Blocking : A 끝나고 B 진행... B 끝나고 C 진행...

Non-blocking : A 진행하면서 B 진행... B 진행하면서 C 진행...

 

 

 

 

 


  • Synchronous Blocking : 작업이 시작되면 작업이 완료될 때까지 제어권을 가진 코드는 다른 작업을 실행하지 않고 대기
                                                 ex. 함수 호출

 

  • Synchronous Non-blocking : 작업이 시작되면 작업이 완료될 때까지 대기하지 않고, 제어권을 가진 코드는 다른 작업을 실행                                                     ex. 멀티스레딩을 이용한 논블로킹 작업

 

  • Asynchronous Blocking : 작업이 시작되면 작업이 완료될 때까지 제어권을 가진 코드는 다른 작업을 실행하지 않고 대기                                                     차이점 : 비동기적으로 호출하여 결과를 처리

 

  • Asynchronous Non-blocking : 작업이 시작되면 작업이 완료될 때까지 대기하지 않고, 제어권을 가진 코드는 다른 작업을 실행                                                   차이점 : 작업 결과는 콜백이나 프로미스와 같은 방식으로 처리

 

 

 

 

 

 

 

 

◎ 참고 : https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%EB%8F%99%EA%B8%B0%EB%B9%84%EB%8F%99%EA%B8%B0-%EB%B8%94%EB%A1%9C%ED%82%B9%EB%85%BC%EB%B8%94%EB%A1%9C%ED%82%B9-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC#%EB%8F%99%EA%B8%B0/%EB%B9%84%EB%8F%99%EA%B8%B0__%EB%B8%94%EB%A1%9C%ED%82%B9/%EB%85%BC%EB%B8%94%EB%A1%9D%ED%82%B9

 

👩‍💻 완벽히 이해하는 동기/비동기 & 블로킹/논블로킹

동기/비동기 & 블로킹/논블록킹 프로그래밍에서 웹 서버 혹은 입출력(I/O)을 다루다 보면 동기/비동기 & 블로킹/논블로킹 이러한 용어들을 접해본 경험이 한번 쯤은 있을 것이다. 대부분 사람들은

inpa.tistory.com

 

반응형

'개발 만담 > 헷갈리는 개념' 카테고리의 다른 글

Path Variable VS Query Parameter  (0) 2023.08.31