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

Mutex profile trong Go: tìm khóa nào là nút thắt tranh chấp, thứ CPU profile không thấy

Benchmark cho biết chậm, nhưng không cho biết khóa nào nghẽn. Mutex profile đo tổng thời gian goroutine phải chờ khóa. Đo thật: 10 goroutine tranh một mutex nóng tích lũy 20,8 giây chờ, 100% quy về đúng khóa đó, khóa nguội bị loại. Cách bật, phân tích, và sửa. Go 1.23.

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

Đọc GODEBUG=schedtrace trong Go: giải mã trạng thái bộ lập lịch không cần thư viện

schedtrace là công cụ số một để nhìn vào bộ lập lịch Go. Bài này giải mã từng trường của một dòng SCHED thật, và theo dõi vòng đời một run qua bốn snapshot — từ lúc goroutine dồn vào hàng đợi cục bộ tới khi mọi core bận. Kèm cách đọc để chẩn đoán nút thắt. Go 1.23.

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

Semaphore có trọng số trong Go: giới hạn tài nguyên khi mỗi việc tốn khác nhau

golang.org/x/sync/semaphore cho phép mỗi lần Acquire tốn số đơn vị khác nhau — điều channel làm semaphore không diễn đạt được. Đo thật: 12 việc trọng số 1/3/5 với sức chứa 10 giữ đúng giới hạn, và Acquire nhanh hơn channel-semaphore ~2 lần. Khi nào cần. Go 1.23.