当前位置: 首页 > 编程语言 > C#

为什么线程优先级没有作用?分享

时间:2023-04-10 14:40:05 C#

为什么线程优先级没有作用?namespaceHelloWorld{classProgram{staticvoidMain(string[]args){Threadt=newThread(()=>WriteY("11"));t.开始();t.IsBackground=true;线程.CurrentThread。优先级=ThreadPriority.Highest;对于(inti=0;i<1000;i++)Console.Write("x");System.Console.ReadLine();}staticvoidWriteY(stringss){for(inti=0;i<1000;i++)Console.Write(ss);System.Console.ReadLine();}}}嗨,我认为“x”线程应该首先完成,因为它具有最高优先级。但结果是他们仍在转换。首先,无论优先级如何,您都不能假设哪个并行作业先完成。另外,请阅读JeffAtwood的这篇文章,了解为什么使用线程优先级是个坏主意。http://www.codinghorror.com/blog/2006/08/thread-priorities-are-evil.html如果tl;dr只是一个引用:无论你是多么优秀的程序员,我几乎可以保证你赢了超越在您的操作系统中编写调度程序的程序员。如果您的PC上有多个CPU(核心)可用,这是“正常”的,因为线程1在CPU/核心1上运行,线程2在CPU/核心2上运行。我想如果你用更多的多线程重新使用相同的线程,那么运行例如Prime95在后台使用100%的CPU它应该有所作为,但是如果<=threads那么(可用的)CPU/corse调度程序将在其自己的核心上运行运行每个线程(如果他们正在做同样的事情),他们会同时完成...以上是C#学习教程:为什么线程优先级没有作用?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: