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

Test giòn đo thật: năm nguồn kinh điển chạy 100 lần — đua dữ liệu đỏ 91% trên 10 CPU, 0% trên 1 CPU, 100% với -race; trạng thái cấp gói đỏ 0% theo thứ tự mặc định, 54% khi -shuffle; goroutine rò làm test hàng xóm đỏ 97%; bản sửa 0/100

Cấy năm nguồn test giòn vào một gói Go: TTL đo bằng đồng hồ thật, trạng thái cấp gói dùng chung, bộ đếm không mutex, worker nền quên dừng, JSON ghép theo thứ tự duyệt map. Chạy 100 lần và đếm: thời gian đỏ 2% bình thường nhưng 26% khi bóp còn 1 CPU; đua đỏ 91% trên 10 CPU, 0% trên 1 CPU, 100% với -race kèm hai dòng DATA RACE; test phụ thuộc thứ tự đỏ 0% theo thứ tự mặc định qua 100 tiến trình riêng và 54% khi -shuffle=on; worker rò làm test hàng xóm đỏ 97% và goleak chỉ đích danh; map order đỏ 14 đến 25%. Tỉ lệ đỏ là của cặp test và cách chạy. Bản sửa: 0/100 với shuffle và race.

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.