Asynchronous Programming
비동기 프로그래밍
목차
- 비동기 프로그래밍에 컨셉 소개
- 러스트는 어떠한 방식으로 비동기 프로그래밍을 구현하였는가
- From Sync to Async
- Core concepts
- Futures, Async Functions, and Await Expressions
async_std::task::block_on
async_std::task::spawn_local
- Async blocks,
async_std::task::spawn
, Send
- 위 개념들을 모두 다루는 예제인 챗 서버와 클라이언트는 시간 관계상 생략
세션 목표: 비동기 프로그래밍 개념 이해하기 & 구현 함수 간 차이 알기
비동기 프로그래밍 컨셉
- 동기 회로는 타이밍을 위해 클럭을 이용하고 비동기 회로는 이벤트나 다른 입력에 의해 트리거되는 방식을 이용한다.
- 우리가 흔히 API에서 말하는 동기와 비동기는 다음과 같다. (주요 차이점)
- 동기: 동기 방식으로 요청을 보내면 코드의 실행을 멈추고 유저 활동을 freezing한다. 데이터를 받으면 다시 실행한다.
- 비동기: 동기 방식과 다르게 데이터를 반환받을 때 콜백을 받는다.
어떤 상황에서 비동기 프로그래밍이 필요할까?
- 챗 서버를 만들고 있다고 가정하자. 쓰레드(thread)를 열어서 들어오는 요청을 모두 처리할 수도 있다. 하지만 새로운 커넥션마다 새로운 쓰레드를 생성하는 것은 요청의 건수가 늘어날수록 까다로워진다.
이런 상황을 해결하는 러스트의 비동기 프로그래밍 특징