event 하나에 코루틴 하나, 스레드는 풀이 나눠 쓴다

co_await에 닿으면 스레드를 놓고, 응답이 오면 그 자리에서 이어간다

event 하나에 코루틴 하나, 스레드는 풀이 나눠 쓴다 co_await에 닿으면 스레드를 놓고, 응답이 오면 그 자리에서 이어간다 message A · SPOT event 마다 코루틴 하나 message A task_t 코루틴 A · Architecture component task_t 코루틴 A timer tick · SPOT event 마다 코루틴 하나 timer tick task_t 코루틴 T · Architecture component task_t 코루틴 T message B · SPOT event 마다 코루틴 하나 message B task_t 코루틴 B · Architecture component task_t 코루틴 B worker 스레드 풀 · CPU 코어 수만큼 · Architecture component worker 스레드 풀 CPU 코어 수만큼 대기 중 코루틴 · 스레드 점유 0 · Architecture component 대기 중 코루틴 스레드 점유 0 co_await → suspend 응답 도착 → resume SPOT event 마다 코루틴 하나

코루틴은 스레드가 아니다

  • • event마다 코루틴을 하나 만들지만 스레드는 늘지 않는다. 스레드는 CPU 코어 수만큼의 풀이 전부다.
  • • co_await에 닿은 코루틴은 스레드를 놓는다. 대기하는 동안 점유가 0이므로 대기가 많아도 스레드가 마르지 않는다.