본문 바로가기
아키텍처 | 설계

blocking sync / blocking async / non-blocking sync / non-blocking async

by 자유코딩 2020. 8. 10.

blocking / non-blocking 

async / sync 방식의 차이

 

1. blocking sync

작업 수행 -> 대기 -> 결과 반환 -> 다시 작업 진행

 

2. blocking async

 - node js 와 mysql 을 사용하는 경우에 이럴 수 있다.

nodejs 는 async인데 mysql은 blocking 이다.

직접적으로 이렇게 사용하는 모델이 있지는 않다.

 

blocking이기 때문에 함수 호출 후 대기한다.

콜백 함수를 리턴받고 호출한다.

 

 

3. non-blocking sync

작업 수행 -> 함수 호출 -> 바로 콜백 반환 -> 완료 확인 -> 완료 안됨 -> 다시 호출 ->

-> 다른 작업 수행 -> 완료확인 -> 완료 안됨 -> 다시 호출

다른 작업을 수행할 수는 있는데 완료 되었는지 계속 확인하고 다시 호출한다.

 

 

4. non-blocking async 

작업 수행 -> 결과에 상관없이 다른 작업 수행 -> 완료되면 콜백함수 실행 -> 

io 작업에 대해서 다른 작업이 막히지 않는다.

 

댓글