비동기 애플리케이션을 작성하면 정확히 이런 작업을 수행한다. 1장(chapter_01/minimal-tcp/src/main.rs)의 minimal-tcp 코드를 보면 블로킹 방식으로 각각의 스트림을 처리했다. 다음 스트림으로 이동하기 전에 하나의 스트림 처리를 완료하는 식이다.
다중 스레드 환경에서 각 스트림을 여러 스레드에 분배하고 백그라운드에서 계산한 다음 다시 포그라운드로 돌려보내 응답을 요청 클라이언트에 보낸다. 또 다른 방식은 단일 스레드를 사용해서 가능할 때마다 작업을 선택하는 방식이다. 여기서 핵심은 실행 시간이 긴 메서드라면 런타임에 제어권을 양보하고 완료하는 데 더 오래 걸린다는 신호를 보낼 수 있다는 점이다. 그런 다음 런타임은 다른 계산을 수행할 수 있으며, 실행 시간이 긴 메서드가 계산을 완료했는지 다시 확인한다.
들어오는 HTTP 요청을 비동기식으로 처리하려면 비동기 개념을 이해해야 하며, 비동기식으로 실행할 수 있는 타입과 구문을 제공하는 프로그래밍 언어가 필요하다. 그리고 우리는 우리의 코드를 가져와서 논블로킹 방식3으로 실행할 수 있는 런타임이 필요하다. 그림 2-9에 이를 정리했다.