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
최근 글