X
Sync, Async, Blocking, NonBlocking
동기, 비동기, 블록킹, 논블록킹
목적
고객이 커피점에서 커피를 주문하는 과정을 예시로 동기
와 비동기
, 블록킹
과 논블록킹
4개의 대한 개념과 각각의 차이점을 알아보도록 한다.
Sync(동기) vs Async(비동기)
동기
와 비동기
는 보통 호출하는 곳(고객)의 입장으로, 전체과정을 기다릴 것인지 아닌지로 나눌 수 있을 것 같다.
Sync
고객은 카운터에 주문을 하고나서 커피가 나오기까지의 과정을 계속 기다리고 있는다. 그리고 커피를 받고나서 자신의 해야할 작업을 다시 시작한다.
Async
다음으로 비동기를 예시를 든다면, 고객은 카운터에 주문을 한 후, 자신의 할일을 하다가 커피가 나오면 그 때 받아간다.
그리고 이 커피가 나왔는지 어떻게 체크하냐에 따라서 블록킹
과 논블록킹
으로 나눌 수 있다.
Blocking(블록킹) vs Non-Blocking(논블록킹)
커피가 나왔는지 안나왔는지 알 수 있는 방법은 아래와 같이 두 가지 경우로 나타낼 수 있다.
- 진행중이던 작업을 마친 후 다시 카운터에서 커피가 나오길 기다린다(작업이 지속되지 않는다) - 블록킹
- 진행중이던 작업 도중에 커피가 나왔음을 알려주면 받아간다(작업이 지속된다) - 논블록킹
Blocking
만약 작업 도중에 커피가 꼭 필요한 시점이라면 Blocking 방식으로 요구할 수도 있다.
NonBlocking
커피가 꼭 필요한 시점이 아니라면 그냥 하던일을 계속하다가 커피를 받으면 된다.
Reference
- https://brunch.co.kr/@springboot/267
최근 글