C# में प्रत्येक थ्रेड की एक प्राथमिकता (Priority) होती है जो OS शेड्यूलर को बताती है कि इसे कितना CPU समय देना है। Thread.Priority प्रॉपर्टी इसे पढ़ने/सेट करने के लिए उपयोग होती है।
थ्रेड प्राथमिकता स्तर
| प्राथमिकता | विवरण |
|---|---|
ThreadPriority.Highest |
सबसे अधिक CPU समय |
ThreadPriority.AboveNormal |
सामान्य से अधिक |
ThreadPriority.Normal |
डिफॉल्ट (मानक) |
ThreadPriority.BelowNormal |
सामान्य से कम |
ThreadPriority.Lowest |
सबसे कम CPU समय |
उदाहरण: वर्तमान थ्रेड की प्राथमिकता देखना
using System;
using System.Threading;
namespace Demo {
class MyClass {
static void Main(string[] args) {
Thread thread = Thread.CurrentThread;
thread.Name = "My Thread";
Console.WriteLine("Thread Priority = {0}", thread.Priority);
Console.ReadKey();
}
}
}
आउटपुट
Thread Priority = Normal
प्राथमिकता बदलना
Thread thread = Thread.CurrentThread;
thread.Priority = ThreadPriority.Highest;
Console.WriteLine("New Priority: " + thread.Priority);
महत्वपूर्ण विचार
- प्राथमिकता केवल संकेत (hint) है OS शेड्यूलर के लिए, गारंटी नहीं।
- उच्च प्राथमिकता वाले थ्रेड्स निम्न प्राथमिकता वालों को स्टार्व कर सकते हैं (थ्रेड स्टार्वेशन)।
- UI थ्रेड की प्राथमिकता आमतौर पर Normal या AboveNormal होनी चाहिए।
- बैकग्राउंड कार्य के लिए
BelowNormalयाLowestउपयुक्त है।
आधुनिक विकल्प: Task Priority
Task और TaskScheduler के साथ प्राथमिकता प्रबंधन अलग तरीके से काम करता है:
// Task.Run के लिए कोई सीधा प्राथमिकता नहीं // कस्टम TaskScheduler या ThreadPool.SetMinThreads उपयोग करें