根据我过去的读物,我们鼓励您不要以编程方式更改Windows应用程序的优先级,如果这样做,则永远不要将其更改为“实时”。
与“高”和“高于正常”相比,“实时”过程优先级设置有什么作用?
Answers:
实时优先级线程永远不会被计时器中断抢占,并且以比系统中任何其他线程更高的优先级运行。这样,CPU绑定的实时优先级线程可能会完全破坏计算机。
创建实时优先级线程需要特权(SeIncreaseBasePriorityPrivilege),因此它只能由管理用户完成。
对于Vista及更高版本,确实要求它们以实时优先级运行的应用程序的一种选择是使用多媒体类调度程序服务(MMCSS),并让它管理线程的优先级。MMCSS可以防止您的应用程序占用过多的CPU时间,因此您不必担心会浪费机器的时间。
简而言之,“实时”优先级高于“高”优先级。我认为没有什么比这更多的了。哦,是的-您必须具有SeIncreaseBasePriorityPrivilege
将线程放入Real Time类的功能。
Windows有时会出于各种原因提高线程的优先级,但不会将线程的优先级提高到另一个优先级类别。它也不会提高实时优先级类中线程的优先级。因此,高优先级线程不会将任何自动临时提升提升为实时优先级类。
Russinovich关于Windows如何处理优先级的“ Inside Windows”一章是了解其工作方式的重要资源:
请注意,在普通Windows系统上,具有实时优先级的线程绝对没有问题-它们不一定适用于专用计算机上运行的特殊进程。我认为多媒体驱动程序和/或进程可能需要具有实时优先级的线程。但是,这样的线程不需要太多的CPU-它应该在大多数时间处于阻塞状态,以便正常的系统事件得到处理。
这将是最高的可用优先级设置,通常仅在专用于运行该特定程序的盒子上使用。它实际上足够高,可能会导致键盘和鼠标线程无响应,从而导致饥饿。
因此,基本上,如果您要询问,请不要使用它:)
Windows得知程序使用的优先级高于正常优先级时,似乎就限制了进程的优先级。
将优先级从IDLE设置为REALTIME不会更改CPU使用率。
我在多处理器AMD CPU上发现,如果像最后一个那样掉落一个CPU,则CPU使用率将达到最大,而最后一个CPU将保持空闲状态。在我的Quad AMD上,处理器速度提高到75%。
使用任务管理器->选择进程->右键单击进程->选择->设置亲和力单击除最后一个处理器以外的所有处理器。如果处理视频会增加,则CPU使用率将增加到其余处理器的最大值,并且帧数也会增加。
实时是可用于流程的最高优先级。因此,它与“高”的区别在于其高出一级,而“高于正常的”之处在于其高两级。
同样,实时也是线程优先级。
进程优先级类别会提高或降低进程中所有有效线程的优先级,因此被视为“基本优先级”。
因此,一个过程具有:
由于应该将实时保留给绝对必须先于其他正在运行的进程的应用程序,因此存在特殊的安全特权以防止随意使用它。这由安全策略定义。
在NT6 +(Vista +)中,使用Vista多媒体类计划程序是在以下条件下实现实时操作的正确方法: 不实时OS。由于OS并非为实时操作而设计,因此它在大多数情况下并不完美。
Microsoft认为此优先级非常危险,这是正确的。除非在非常特殊的情况下,否则任何应用程序都不应使用它,甚至应尝试将其使用限制为临时需要。