Mỗi luồng trong C# có thuộc tính Priority (enum ThreadPriority) xác định mức ưu tiên lập lịch CPU. Các mức: Lowest, BelowNormal, Normal (mặc định), AboveNormal, Highest.
Mã nguồn
using System;
using System.Threading;
namespace Demo {
class MyClass {
static void Main(string[] args) {
// Lấy luồng hiện tại
Thread thread = Thread.CurrentThread;
thread.Name = "My Thread";
// Hiển thị độ ưu tiên
Console.WriteLine("Độ ưu tiên luồng = {0}", thread.Priority);
Console.ReadKey();
}
}
}
Kết quả
Độ ưu tiên luồng = Normal
Thay đổi độ ưu tiên
thread.Priority = ThreadPriority.Highest;
// Hoặc
thread.Priority = ThreadPriority.AboveNormal;
Các mức độ ưu tiên
| Mức | Giá trị | Mô tả |
|---|---|---|
Lowest | 0 | Ưu tiên thấp nhất |
BelowNormal | 1 | Dưới bình thường |
Normal | 2 | Mặc định |
AboveNormal | 3 | Trên bình thường |
Highest | 4 | Ưu tiên cao nhất |
Lưu ý quan trọng
- Độ ưu tiên chỉ là gợi ý (hint) cho OS scheduler — không đảm bảo thứ tự thực thi.
- Lạm dụng
Highestcó thể làm treo hệ thống (starvation các luồng khác). - Ứng dụng .NET hiện đại nên dùng
Task+TaskSchedulerthay vì thao tácThreadtrực tiếp. - Luồng GC, Finalizer, ThreadPool có độ ưu tiên riêng do runtime quản lý.