C#编程-了解线程的优先级-LMLPHP

C#编程-了解线程的优先级-LMLPHP
C#编程-了解线程的优先级-LMLPHP

了解线程的优先级

控制线程行为的一个属性是它的优先级。.NET运行时环境基于它们的优先级执行线程。CPU一次仅执行一个线程。因此,处于执行的可运行状态的线程,排队等待轮到被处理器执行。线程是固定优先级调度的。带有优先级的每个线程在处理器的线程队列中有自己的位置。

定义线程优先级

线程优先级是指定一个线程优先级相对于另一个线程优先级的属性。多个线程的执行在单个处理器上以特定的顺序被调度。线程优先级可以定义为:

  1. 高于常规
  2. 低于常规
  3. 最高
  4. 最低
  5. 正常

较高优先级的线程在较低优先级的线程之前。如果C#遇到了另一个优先级更高的线程,会推后当前线程并执行较高优先级的线程。

当许多线程准备执行的时候,.NET运行时系统选择优先级最高的可运行线程执行。如果高优先级的线程停止或变得不可运行的时候,下一个较低优先级的线程开始执行。如果线程等待一个I/O操作,它在队列中被其他线程推后。在另一个较高优先级线程上调用Sleep()方法结束时,队列中的线程还可以被推后。


设置线程优先级

可以在创建了线程之后使用Thread类的Priority属性设置线程优先级。以下代码段设置线程的优先级:

	NewThread.Priority = ThreadPriority.Highest ;

在上述代码中,ThreadProiority.Highest属性指定新线程的优先级设置。线程基于它们的优先级被调度执行。尽管线程在运行时被执行,但是所有的线程都由操作系统指定处理器时间片。确定线程执行顺序的调度算法因每个操作系统而异。

如果有相同优先级的多个线程可用,调度程序会为每个线程分配执行的固定时间片。只要较高优先级的线程可以运行,较低优先级的线程就没有机会执行。当在给定的优先级没有可运行的线程的时候,调度程序移动到下一个较低优先级,并调度那个优先级的线程执行。

以下代码显示了具有不同优先级的两个子进程的执行:

	using System;
	using System.Threading;
	class ThreadSchedule
	{
   
		public static
01-16 16:15