根据我过去的内容,我们鼓励您不要以编程方式更改Windows应用程序的优先级,如果这样做,则不应将其更改为“实时”。
“实时”流程优先级设置与“高”和“高于正常”相比有什么作用?
答案 0 :(得分:74)
实时优先级线程永远不会被定时器中断抢占,并且以比系统中任何其他线程更高的优先级运行。因为这样一个CPU绑定的实时优先级线程可以完全破坏一台机器。
创建实时优先级线程需要特权(SeIncreaseBasePriorityPrivilege),因此只能由管理用户完成。
对于Vista及更高版本,对于要求它们以实时优先级运行的应用程序的一个选项是使用Multimedia Class Scheduler Service(MMCSS)并让它管理您的线程优先级。 MMCSS将阻止您的应用程序使用太多的CPU时间,因此您不必担心机器的冲击。
答案 1 :(得分:24)
简单地说,“实时”优先级高于“高”优先级。我认为除此之外还有更多。哦是的 - 你必须让SeIncreaseBasePriorityPrivilege
将线程放入实时课程。
Windows有时会出于各种原因提升线程的优先级,但它不会将线程的优先级提升到另一个优先级。它也不会提高实时优先级中线程的优先级。因此,高优先级线程不会在实时优先级中获得任何自动临时提升。
Russinovich关于Windows如何处理优先级的“Inside Windows”章节是了解其工作原理的重要资源:
请注意,在普通Windows系统上具有实时优先级的线程绝对没有问题 - 它们不一定适用于在专用计算机上运行的特殊进程。我想多媒体驱动程序和/或进程可能需要具有实时优先级的线程。但是,这样的线程不需要太多CPU - 它应该在大多数情况下阻塞,以便正常的系统事件得到处理。
答案 2 :(得分:16)
这将是可用的最高优先级设置,通常仅用于专用于运行该特定程序的框。它实际上足够高,它可能导致键盘和鼠标线程的饥饿达到无响应的程度。
所以基本上,如果你不得不问,不要使用它:)
答案 3 :(得分:2)
实时是进程可用的最高优先级类。因此,它与“高”的不同之处在于它更大一步,而且“高于正常”,因为它比两步更大。
同样,实时也是一个线程优先级。
流程优先级 class 提高或降低流程中的所有有效线程优先级,因此被视为“基本优先级”。
所以,一个过程有一个:
由于应该为绝对必须抢占其他正在运行的进程的应用程序保留实时,因此有一个特殊的安全权限可以防止随意使用它。这由安全策略定义。
在NT6 +(Vista +)中,使用Vista多媒体类调度程序是在不实时操作系统中实现实时操作的正确方法。在大多数情况下,它的工作原理并不完美,因为操作系统不是为实时操作而设计的。
微软认为这个优先级非常危险,这是正确的。除非在非常特殊的情况下,否则任何应用程序都不应该使用它,甚至尝试将其使用限制为临时需求。
答案 4 :(得分:1)
一旦Windows获知程序使用高于正常的优先级,它似乎限制了该进程的优先级。
将优先级从IDLE设置为REALTIME不会改变CPU使用率。
我在我的多处理器AMD CPU上发现,如果我丢弃其中一个CPU,就像最后一个CPU一样,CPU使用率将为MAX OUT,最后一个CPU保持空闲状态。我的Quad AMD处理器速度提升到75%。
使用任务管理器 - >选择流程 - >右键单击流程 - >选择 - >设置亲和力 单击除最后一个处理器之外的所如果处理视频将增加,CPU使用率将增加到剩余处理器上的MAX和帧计数。
答案 5 :(得分:0)
其他一切基本上都是更高/更高。键盘不如实时过程优先。这意味着该过程将比键盘更快地被考虑,如果它无法处理,那么键盘会变慢。
答案 6 :(得分:0)
与实时之前的所有其他答案一样,该程序为最优先级。在该程序处理完毕之前,不会处理任何内容 在我的奔腾4机器上,我将Minecraft设置为实时,因为它大大提高了游戏性能,系统似乎完全稳定。所以实时并不像看起来那么糟糕,只要你有一个多核设置程序与特定核心或核心的亲和力(只是不是所有核心,只是为了让其他所有能够在实时设置程序挂起的情况下运行并将优先级设置为实时。