Coroutine — suspend / resume

3 request, 1 runner (event loop / thread JS). Mỗi coroutine: làm → await (suspend) → resume → xong. ← bài viết · block vs non-block

Suspend = cất state, nhả runner
Resume = gắn lại, chạy tiếp đúng chỗ
Chỉ 1 coroutine “running” tại một thời điểm
Runner1 slot
rảnh

Bấm Chạy — xem await = suspend, data về = resume.

tick ~ 0

running (ôm runner) suspended (chờ I/O — không ôm runner) done

Nếu mỗi request ôm 1 thread suốt lúc chờ mạng, bạn cần 3 thread song song. Ở đây 3 coroutine suspend — runner vẫn deal lần lượt đoạn CPU.