tokio runtime

I/O가 많아지면 스레드 풀 대신 태스크를 스케줄한다

기존 `ThreadPool`은 작업을 OS 스레드에 나눠 주지만, Tokio는 `async` 작업을 런타임 위에서 깨어날 때마다 다시 진행합니다.

thread pool

블로킹 작업을 워커가 가져간다

입구

execute(job)로 클로저를 보냅니다.

대기

워커는 `recv`에서 작업이 올 때까지 멈춰 있습니다.

종료

`sender`를 닫아 수신 실패를 만들고 `join`으로 정리합니다.

async runtime

소켓 준비 시점에 태스크가 이어진다

입구

#[tokio::main]이 비동기 런타임을 엽니다.

대기

`accept`, `read`, `write_all`은 `.await`에서 양보합니다.

분산

`tokio::spawn`이 연결별 처리 작업을 런타임에 등록합니다.