동기/비동기는 두 개 이상의 무엇인가가 시간을 맞춘다/안맞춘다로 구분할 수 있습니다.
동기 방식은 메서드 리턴과 결과를 전달받는 시간이 일치하는 명령 실행 방식입니다.
또, 동기 방식은 한 함수가 끝나는 시간과 바로 다음의 함수가 시작하는 시간이 같습니다.
비동기 방식은 여러 개의 처리가 함께 실행되는 방식으로, 동기 방식에 비해 단위시간 당 많은 작업을 처리할 수 있습니다.
단, CPU나 메모리를 많이 사용하는 작업을 비동기로 처리하게 되면 과부하가 걸릴 수 있습니다. 프로그램의 복잡도가 증가하게 됩니다.
블로킹/논블로킹은 동기/비동기와는 다른 관점으로, 내가 직접 제어할 수 없는 대상(IO/멀티스레드)을 상대하는 방법에 대한 분류입니다.
블로킹 방식은 대상의 작업이 끝날 때 까지 제어권을 대상이 가지고 있는 것을 의미합니다.
반면에 논블로킹은 대상의 작업 완료여부와 상관없이 새로운 작업을 수행합니다.
동기 논블로킹은 계속해서 polling을 수행하기 때문에 컨텍스트 스위칭이 지속적으로 발생해 지연이 발생합니다.
'Back-end > Basic' 카테고리의 다른 글
Thread-safe 하다는 의미와 설계하는 법 (0) | 2021.11.22 |
---|---|
멀티스레드 프로그래밍 (0) | 2021.11.21 |
컨텍스트 스위칭 (0) | 2021.11.21 |
프로세스와 스레드의 차이 (0) | 2021.11.21 |
OAuth에 대해서 간단히 설명 (0) | 2021.11.21 |