본문 바로가기
컴퓨터

non blocking, blocking, 동기 비동기의 차이

by dharana7723 2021. 7. 13.

저는 기존에 논블락킹이 비동기이고, 동기가 블락킹과 동일한 개념이라고 알고 있었는데,

 

같지만 관심사라는 부분에서 차이가 있다는 사실을 알게 되었습니다.

 

동기 비동기는 시간이라는 측면에 집중하고, blocking / non-blocking은 제어권이라는 면에 집중하는 것입니다.

 

동기는 제어권과 리턴값이 '동시'에 반환되느냐에 집중하고, blocking은 '제어권'이 리턴값과 같이 반환되느냐에 집중하는 것입니다.

 

마찬가지로 asynchrnous 및 비동기 또한 제어권과 리턴값이 '동시'에 반환되지않는 시간에 집중하는 것과 

'제어권'이 리턴값과 같이 반환되지 않느냐에 집중하는 것이 다릅니다.

 

그런데 값을 반환할때 실제로 완료가 되지않았을때 반환하는 경우 제어권을 반환하며 아직 완료되지않음이란 값을 반환하기도 합니다. 그런 경우 이는 제어권과 완료되지않음이란 값을 반환했기 때문에 동기라고 가정합니다.

그러나 그내용 또한 비동기 일수 있고 이러한 개념은 모든 상황에서 각기 달라질 수 있기 때문에(비동기인데 어떠한 부분은 동기사용하고 기다려야하는 경우가 있음) 딱 떨어지는 용어라고 정의하지는 않는 것 같습니다.

즉 이러한 상황을 범위를 어디로 잡느냐에 따라 그 개념이 달라지게 됩니다.

 

따라서 결론적으로는 blocking/non-blocking은 제어권에 관한, 제어할 수 없는 대상을 어떻게 처리할지에 관한 문제,

동기/비동기는 시간, 대상들의 시간을 일치시키는지에 대한 문제라고 보시면 될 것 같습니다.

 

다음의 내용이 자세한 도움이 되었습니다. 좀 더 자세한 내용은 10분 우테코톡의 영상을 참조하시면 좋을 것 같습니다.

 

참조:

https://www.youtube.com/watch?v=IdpkfygWIMk 

 

 

 

 

'컴퓨터' 카테고리의 다른 글

ngix 및 apache 사용 이유  (0) 2021.11.15
DDD - 도메인 주도 설계  (0) 2021.08.15
32비트, 64비트 차이  (0) 2021.07.21
ASGI와 WSGI  (0) 2021.06.23
Monkey pathcing의 의미와 장단점  (0) 2021.06.23