我想编写一个程序,其中几个工作线程应该处理具有不同优先级的不同任务。大型任务将以低优先级处理,小型任务将以非常高的优先级处理。
在一个完美的世界中,我只是为每种任务设置不同的优先级,但由于它是比Windows上可用的优先级更多的任务类型,我认为我必须动态设置线程优先级。
我认为应该有一个具有最高优先级的主线程,作为一种调度程序,动态地设置工作线程的优先级。但我想知道在Windows上实际发生了什么,当我调用SetThreadPriority()时,特别是操作系统考虑优先级更改的速度有多快。
理想情况下,我需要提高<>内的'小任务线程'的优先级。 1毫秒这可能吗?有没有办法改变操作系统的延迟(如果有的话)对优先级变化作出反应?
答案 0 :(得分:1)
Windows调度程序(调度程序)不是单个进程/线程;它遍布内核。调度员通常由以下事件触发:
SetThreadPriority
)我需要提高<>内的'小任务线程'的优先级。 1毫秒这可能吗?
根据3:是,调度员将立即重新安排。
参考:Windows Internals Tour: Windows Processes, Threads and Memory, Microsoft Academic Club 2011