Lập trình 22/09/2026 7 phút

Kiểm thử mã đồng thời đo thật: -race bắt đua dữ liệu 20/20 nhưng im lặng với đua logic; đua logic và deadlock lộ 0/1000 lần trên 10 CPU, lộ 100/100 khi chèn một điểm nhường CPU; runtime Go không báo deadlock trong go test

Ba lỗi đồng thời khác bản chất trong một gói Go: bộ đếm không mutex, rút tiền kiểm rồi trừ với hai lần khoá riêng, chuyển khoản khoá theo thứ tự tham số. Bộ dò đua bắt lỗi đầu 20/20 và không nhắc một chữ tới Withdraw dù test đó đỏ 5/20 dưới -race. Đua logic đỏ 0/100 và 0/1000 lượt chạy thường, 0/100 trên 1 CPU, 100/100 khi chèn runtime.Gosched vào giữa kiểm và trừ. Với p bằng 26% cần 10 lượt để 95% bắt được; với p bằng 0 không N nào đủ. Deadlock kẹt 0/20 lượt thường, 20/20 với điểm nhường, và runtime Go không báo deadlock trong go test, chỉ -timeout và goroutine dump chỉ ra chỗ kẹt.