📅  最后修改于: 2023-12-03 15:30:19.496000             🧑  作者: Mango
在 C# 中,线程优先级是通过 ThreadPriority
枚举来指定的,可以在创建线程时使用。
public enum ThreadPriority
{
Lowest = 0,
BelowNormal = 1,
Normal = 2,
AboveNormal = 3,
Highest = 4
}
下面是一个使用 ThreadPriority
枚举的例子。在这个例子中,我们将创建两个线程,并为它们指定不同的优先级。其中一个线程被分配了较高的优先级,而另一个被分配了较低的优先级。
using System;
using System.Threading;
public class Example
{
public static void Main()
{
Thread t1 = new Thread(new ThreadStart(Worker));
Thread t2 = new Thread(new ThreadStart(Worker));
// 设置线程优先级
t1.Priority = ThreadPriority.AboveNormal;
t2.Priority = ThreadPriority.BelowNormal;
// 启动线程
t1.Start();
t2.Start();
// 等待线程结束
t1.Join();
t2.Join();
}
static void Worker()
{
Console.WriteLine("线程开始执行:{0}", Thread.CurrentThread.Name);
for (int i = 1; i <= 10; i++)
{
Console.WriteLine("{0}: {1}", Thread.CurrentThread.Name, i);
Thread.Sleep(100); // 模拟工作
}
Console.WriteLine("线程执行结束:{0}", Thread.CurrentThread.Name);
}
}
在这个示例中,我们创建了两个线程 t1
和 t2
,并分别为它们设置了较高和较低的优先级。我们使用 Start
方法启动这两个线程,并使用 Join
方法等待它们的结束。
此外,在 Worker
方法中,我们仅仅输出了一些信息以模拟线程的工作,以便更好地演示线程的调度。
在 C# 中,线程优先级是通过 ThreadPriority
枚举来指定的。线程的优先级可以影响线程在调度器中的位置,进而影响线程的执行顺序。
需要注意的是,调用一个线程的 Priority
属性并不保证线程会立即被设置为指定的优先级。调度器可能会决定将一个拥有较高优先级的线程暂停,以便低优先级的线程运行。