각각의 내가 이해한 의미는 이러함.
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 |