C#线程优先级浅析

开发 后端
C#线程优先级是我们在C#高级编程中遇到的问题,那么如何掌握好或者说控制好C#线程呢,这就需要C#线程优先级的学习,那么本文就向你简单介绍C#线程优先级的相关学习体会。

C#线程优先级的必要性:如果在应用程序中有多个线程在运行,但一些线程比另一些线程重要,该怎么办在这种情况下,可以在一个进程中为不同的线程指定不同的优先级。一般情况下,如果有优先级较高的线程在工作,就不会给优先级较低的线程分配任何时间片,其优点是可以保证给接收用户输入的线程指定较高的优先级。在大多数的时间内,这个线程什么也不做,而其他线程则执行它们的任务。但是,如果用户输入了信息,这个线程就立即获得比应用程序中其他线程更高的优先级,在短时间内处理用户输入事件。

C#线程优先级的规律:高优先级的线程可以完全阻止低优先级的线程执行,因此在改变线程的优先级时要特别小心。线程的优先级可以定义为ThreadPriority枚举的值,即Highest、AboveNormal、Normal、BelowNormal和 Lowest。

注意,每个进程都有一个基本优先级,这些值与进程的优先级是有关系的。给线程指定较高的优先级,可以确保它在该进程中比其他线程优先执行,但系统上可能还运行着其他进程,它们的线程有更高的优先级。因此Windows给自己的操作系统线程指定高优先级。

在ThreadPlayaround示例中,对Main()方法做如下修改,就可以看出修改线程的优先级的效果:

  1. ThreadStart workerStart = new ThreadStart(StartMethod);  
  2.  
  3. Thread workerThread = new Thread(workerStart);  
  4.  
  5. workerThread.Name = "Worker";  
  6.  
  7. workerThread.Priority = ThreadPriority.AboveNormal;  
  8.  
  9. workerThread.Start();  

其中,工作线程的优先级比主线程高,运行结果如下所示:

  1. ThreadPlayaroundWithPriorities  
  2.  
  3. Interval to display results at> 1000000  
  4.  
  5. Starting thread: Main Thread  
  6.  
  7. Main Thread: Current Culture = en-US  
  8.  
  9. Starting thread: Worker  
  10.  
  11. Worker: Current Culture = en-US  
  12.  
  13. Main Thread: count has reached 1000000  
  14.  
  15. Worker: count has reached 1000000  
  16.  
  17. Worker: count has reached 2000000  
  18.  
  19. Worker: count has reached 3000000  
  20.  
  21. Worker: count has reached 4000000  
  22.  
  23. Worker: count has reached 5000000  
  24.  
  25. Worker: count has reached 6000000  
  26.  
  27. Worker: count has reached 7000000  
  28.  
  29. Worker: count has reached 8000000  
  30.  
  31. Worker Thread Finished  
  32.  
  33. Main Thread: count has reached 2000000  
  34.  
  35. Main Thread: count has reached 3000000  
  36.  
  37. Main Thread: count has reached 4000000  
  38.  
  39. Main Thread: count has reached 5000000  
  40.  
  41. Main Thread: count has reached 6000000  
  42.  
  43. Main Thread: count has reached 7000000  
  44.  
  45. Main Thread: count has reached 8000000  
  46.  
  47. Main Thread Finished 

这说明,当工作线程的优先级为AboveNormal时,一旦工作线程被启动,主线程就不再运行。

C#线程优先级的相关内容就向你介绍到这里,希望对你了解和学习C#线程优先级有所帮助。

【编辑推荐】

  1. C#线程类的定义实例解析
  2. 判断线程运行状态的两种方法
  3. C#线程学习的一点体会和总结
  4. C#多线程学习经验小结
  5. C#线程控制浅析
责任编辑:仲衡 来源: tzwhx.com
相关推荐

2009-08-12 13:07:13

C#运算符优先级

2010-03-18 14:09:20

Java线程同步

2012-08-14 09:38:29

WAN优化

2009-08-28 16:51:32

C#线程控制

2020-06-04 08:36:55

Linux内核线程

2009-08-12 18:04:44

编写C#多线程

2022-12-23 09:41:14

优先级反转

2023-06-30 19:44:56

CPU调频线程

2009-08-28 15:57:56

C#线程传递参数

2022-06-02 09:29:55

线程组线程树状结构

2010-09-13 17:30:07

CSS优先级

2010-09-01 14:10:36

CSS优先级

2010-08-31 11:04:48

CSS优先级

2020-09-30 09:07:37

DevOps

2021-04-06 10:45:18

React前端优先级

2009-08-07 17:25:37

C# SortedLi

2009-08-17 18:34:50

C# ChangeCo

2009-08-14 17:45:52

C# ArrayLis

2015-06-02 11:26:29

产品团队

2010-09-06 14:53:27

CSS优先级
点赞
收藏

51CTO技术栈公众号