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ố workerjob 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).

Done: 0/30
Elapsed: 0ms
Throughput: 0 job/s
Status: idle

Job queue (30 job)

Workers

2. Pipeline visualizer — gen → square → sum

Mỗi số 1..8 đi qua chuỗi gensquaresum. 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ề.

Sum: 0
Expect (full): 204 (1²+2²+...+8²)
Status: idle

gen

·

square

·

sum

0
[log] click Start để chạy.

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.

Tokens: 3/3
Served: 0
Waiting: 0
3 / 3

Request queue (oldest → newest)

[log] click "Gửi request" để bắt đầu.