📜  C#线程示例:ThreadPriority(1)

📅  最后修改于: 2023-12-03 15:30:19.496000             🧑  作者: Mango

C# 线程示例: ThreadPriority

在 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);
    }
}

在这个示例中,我们创建了两个线程 t1t2,并分别为它们设置了较高和较低的优先级。我们使用 Start 方法启动这两个线程,并使用 Join 方法等待它们的结束。

此外,在 Worker 方法中,我们仅仅输出了一些信息以模拟线程的工作,以便更好地演示线程的调度。

结论

在 C# 中,线程优先级是通过 ThreadPriority 枚举来指定的。线程的优先级可以影响线程在调度器中的位置,进而影响线程的执行顺序。

需要注意的是,调用一个线程的 Priority 属性并不保证线程会立即被设置为指定的优先级。调度器可能会决定将一个拥有较高优先级的线程暂停,以便低优先级的线程运行。