从正在运行的进程设置线程优先级
Setting thread priorities from the running process
我刚刚遇到了 Get/SetThreadPriority 方法,它们让我想知道 - 线程优先级是否可以有意义地设置为高于拥有进程优先级(我不相信可以以相同的方式以编程方式更改)?
使用这些 API 是否存在任何陷阱?
是的,您可以将线程优先级设置为任何类,包括高于当前进程的类。实际上,这两个值是互补的,并提供线程的基本优先级。您可以在您发布的链接的"备注"部分中阅读有关它的信息。
您可以使用 SetPriorityClass 设置进程优先级。
现在我们已经解决了技术细节,我发现直接操作线程的优先级几乎没有用处。操作系统调度程序足够复杂,可以提高 I/O 中阻塞的线程相对于执行 CPU 计算的线程的优先级(以至于当 I/O 中断到达时,I/O 线程将抢占 CPU 线程)。事实上,即使是 I/O 线程也是有区别的,例如,键盘 I/O 线程比文件 I/O 线程获得优先级提升。
在Windows上,线程和进程优先级使用决定整体调度优先级的算法进行组合:
窗口优先级
陷阱? 井:
如果线程通常在 IO 上被阻塞,但必须在其驱动程序发出信号后尽快运行,则提高线程的优先级可能会带来最大的整体收益,例如。必须快速处理缓冲区的视频 IO。
如果线程受 CPU 限制并提升到高优先级,则提高线程的优先级可能会产生最大的整体负面影响,从而阻止正常优先级线程的运行。 如果极端,操作系统线程和实用程序(如任务管理器)将无法运行。
相关文章:
- 将更高的优先级设置为 boost::asio 线程处理进程
- 是否可以在单独的线程中将 QObject 设置为 QML 上下文属性?
- 如何使用 pthreads 以正确的方式设置两个线程之一的优先级
- 设置 JVM 通过 JNI 初始化时创建的线程数
- 设置提升记录器的线程名称
- 如何在 OpenMP 中设置线程数
- OpenBLAS 只为一个例程设置线程数
- 在 OpenCV 上设置线程相关性
- 如何在 Qt5 中设置线程的 CPU 关联?
- 检查Linux功能以设置线程优先级
- std::c++ 中的线程在设置线程函数时不会出错
- 如何在C++中设置线程数
- 如何在Mac操作系统上设置线程优先级pthreads
- 在 Python 和 Java 中设置线程亲和力
- 从正在运行的进程设置线程优先级
- 需要为Solaris 10上的GNU g++2.95.3设置线程安全的std::string
- Windows设置线程关联掩码无效
- 如何在log4cplus中设置线程名称?
- 从创建线程设置线程的"nice level"?
- 在Qt中设置线程中的小部件标签文本