더북(TheBook)

1.1 동기 연산 vs 비동기 연산

 

 

간단히 말해서 동기와 비동기 코드의 런타임(실행 시간)을 구분하는 주요 요소는 대기 시간(wait time)이라고도 하는 지연 시간(latency)입니다. 시간을 명시적으로 코딩하면 이해하기 어렵지만, ‘이것을 실행하라. 그런 다음 즉시 저것을 실행하라’와 같이 코드가 작성된 순서대로 실행이 동기적으로 이루어진다면 오히려 이해하기가 더 쉽습니다.

그러나 컴퓨팅 세계에서는 그러한 사치를 용납하지 않습니다. 고도로 네트워크화된 컴퓨팅 환경에서 메시지를 보내고 응답받는 데 걸리는 시간은 애플리케이션이 사용자 입력에 응답하거나 숫자를 처리하거나 또는 UI를 업데이트하는 등의 다른 작업을 할 수 있는 중요한 시간입니다. ‘이것을 실행해라. (가늠할 수 없는 시간 동안 기다려라.) 그런 다음 저것을 실행하라.’와 같이 데이터베이스 질의에 대한 결과나 네트워크에 대한 응답 또는 사용자 이벤트 완료를 기다리는 동안 애플리케이션을 유휴 상태로 두는 전통적인 접근 방식은 용인되지 않습니다. 따라서 애플리케이션이 항상 반응할 수 있게 비동기 실행을 이용해야 합니다. 여기서 주요한 문제는 장기 실행 프로세스에서 사용자를 블로킹하는 것이 허용되는지입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.