이건 얼마 전에 혼자 고민하다 나름대로 내놓은 결과임.

러스트의 Tokio가 어떻게 구현될까 생각을 좀 해봤음.

회사에서 싱글스레드 - 비동기 런타임을 러스트로 구현한다는 목표가 문서 어딘가 있었거든.

우선 Worker 스레드가 하나 필요함.

Worker 스레드에서는 각종 유저의 Task가 실행되는 스레드임.

IO 스레드가 하나 필요함.

epoll이든 select든 iocp든 여러 소켓의 Recv를 처리할 하나의 IO스레드가 필요함. 여기서 IO 이벤트가 발생하면 Task 대기 큐에서 Task를 꺼내서 워커스레드에서 진행시켜야 함.

 Timer 스레드가 하나 필요함.

비동기로 코드를 짤 때 자주 쓰는 것이 Delay따위의 시간을 두고 다시 흐름을 진행시키는데, 이런 일정 시간 뒤에 Task를 대기 큐에서 꺼내서 워커 스레드로 보내는 작업을 하는 역할을 함.

... 여서 온전히 싱글 스레드만으로는 비동기 런타임을 구현하지 못 하겠다는 생각에 도달했음.

고수분들의 코멘트 부탁