자기개발/CS 상식

Synchronous Asynchronous Blocking Non-Blocking

테크윤 2022. 9. 21. 02:25

각각의 내가 이해한 의미는 이러함.

 

Synchronous

- 실행하는 주체가 결과까지 책임지는것 (끝났니?)

 

Asynchronous 

- 실행하는 주체가 결과까지 책임질 필요가 없음, 콜백함수로 처리. (끝나면 알려줘!)

 

Blocking

- 실행하는 주체의 제어권이 없음 (완료될때까지 여기있을게~)

- 지금작업이 끝나기 전까지는 아무것도 막혀서(Blocking) 못한다  (c scanf 등)

 

Non-Blocking

- 실행하는 주체의 제어권이 있음 (완료되길 바랄게 난 다른거 있으면 하고있을게!)

- 실행하고서 다음작업도 실행 (일반적으로 웹브라우저에서 볼 수 있음)

 

따라서 조합을 하면 다음과 같다.

 

Synchrounous and Blocking

- 실행하고서 제어권이 없음. 결과까지 책임져야함.

- 그러므로 실행결과가 나올 때까지 아무것도 못하고 무한정 대기.

- c의 scanf 를 생각하면 된다.

 

Synchrounous and Non-Blocking

- 실행하는 주체의 제어권이 있지만, 결과는 책임져야함.

- 다른 실행을 할 수 있지만 해당 실행이 완료가 되었는지 체크해야함.

- 게임 로딩 표시를 생각하면 된다. (다른걸 할수 있으나, 주기적으로 진행율 업데이트)

 

Aynchrounous and Non-Blocking 

- 실행하는 주체의 제어권도 있고, 결과도 책임질 필요없음

- 실행하고 바로 다음것을 실행하면 되서 시간적으로 이점을가짐.

- 웹페이지 로드 할 때 각각의 요청이 영향이 서로 없는경우 주로 사용한다고 생각하면된다. (AJAX 요청, JS 비동기 콜백)

 

Aynchrounous and Blocking

- 실행하는 주체의 제어권이 없는데, 결과는 책임질 필요없음...

-  기본적으로 Synchrounous and Blocking 과 성능이 같음. 기본 셋팅이 아니라면 일부러 이렇게 설계할 필요가 없음

-  Node.js에서 비동기적으로 DB작업을 수행 시 Blocking 으로 DB가 수행될 수 있는데 이럴때 발생한다고함.

 

아래는 이해를 돕기위한 사진 예시

 

 

사진 출처 : https://jh-7.tistory.com/25

 

 

'자기개발 > CS 상식' 카테고리의 다른 글

Index 종류  (0) 2022.09.20
Web Server와 WAS의 차이  (2) 2022.09.19