728x90
한마디로 정의하면
동기는 요청한 결과를 직접 제어해서 처리하는 방식
비동기는 요청한 결과를 콜백이나 이벤트를 통해 처리하는 방식
블록킹은 현재의 요청이 끝날때까지 스레드의 작업이 차단됨
논블록킹은 현재의 요청이 끝날때까지 스레드의 작업이 비차단됨
즉,
결과를 직접 제어할 것인가는 동기/비동기에 달려있고,
현재의 스레드가 요청 후 다른일을 할 수 있는가는 블록킹/논블록킹 여부에 달려있다.
때문에
동기 + 블록킹 = 요청 후 요청이 끝날 때까지 아무것도 할 수 없으며, 결과도 직접 제어해야 하기에 기다려야 한다.
동기 + 논블록킹 = 요청 후 요청이 끝날 때까지 다른 작업을 할 수도 있고 안 할 수도 있다. 그러나 결과를 직접 제어해야 하므로 폴링(Polling)이나 반복 확인을 통해 결과를 기다린다.
비동기 + 블록킹 = 요청 후 요청이 끝날 때까지 아무것도 할 수 없지만, 결과를 직접 제어하지 않으며 콜백이나 이벤트로 처리된다.
비동기 + 논블록킹 = 요청 후 요청이 끝날 때까지 다른 작업을 할 수도 있고 안 할 수도 있다. 결과를 직접 제어하지 않으며, 콜백이나 이벤트로 처리된다.
728x90