L36 — Concurrency Patterns
Ba module tương tác cho 3 pattern thường gặp nhất trong production Go:
Worker pool (tune số worker, đo throughput),
Pipeline (xem data flow qua 3 stage, demo cancel propagation),
Token-bucket rate limiter (animate token refill + request consume).
Mọi minh hoạ standalone, mở file:// chạy được.
1. Worker pool simulator
Tune số worker và job latency, bấm Start để xem N worker chia nhau xử lý 30 job từ queue. Theo dõi throughput thực tế ở biểu đồ. Tăng worker thường giảm tổng thời gian — nhưng quá nhiều cũng không có lợi nếu mỗi job rất ngắn (context switch ăn lời).
Job queue (30 job)
Workers
2. Pipeline visualizer — gen → square → sum
Mỗi số 1..8 đi qua chuỗi gen → square → sum. Bấm Start để animate.
Bấm Cancel ctx giữa chừng để xem cancel propagation: mọi stage thấy ctx.Done() và dừng.
Sum partial vẫn được trả về.
gen
square
sum
3. Rate limiter — token bucket
Xô có burst chỗ chứa, vòi nhỏ tốc độ R token/s. Bấm "Gửi request" để consume 1 token. Hết token thì request phải chờ đến khi vòi nhỏ thêm 1 token. Tăng rate xem hiệu ứng.