Windows C++:优先处理线程以防止主线程被抢占

Posted

技术标签:

【中文标题】Windows C++:优先处理线程以防止主线程被抢占【英文标题】:Windows C++: Prioritizing threads to prevent main thread being preempted 【发布时间】:2019-03-06 20:29:10 【问题描述】:

有没有办法向 Window 的任务调度程序传达我的工作线程不如我的主线程紧急,以便它可能选择先中断它们?我的主线程经常被抢占时遇到了一些麻烦,这会减慢将任务委派给其他线程的能力。

【问题讨论】:

如果你的线程经常被抢占到它干扰它的功能的地步,阻止新任务的开始可能是可取的。 These 是所有标准线程功能。似乎没有办法调整优先级。您必须依赖平台的 API。 为了设置线程优先级,在 Windows 上,这可能是相关的:social.msdn.microsoft.com/Forums/vstudio/en-US/… @FrançoisAndrieux - 啊,我把yield() 放在了一些关键位置,它产生了非常积极的效果,现在几乎没有可言的先发制人了。 怎么知道你的主线程经常被抢占? 【参考方案1】:

查看 Win32 API 中的 SetThreadPriority() 函数。

【讨论】:

以上是关于Windows C++:优先处理线程以防止主线程被抢占的主要内容,如果未能解决你的问题,请参考以下文章

如何编程以防止 Windows“无响应”对话框 [重复]

C++解决子线程没有被执行的问题

并发编程之线程属性

实现低优先级后台线程的模式?

从主循环访问线程变量 - c++ - windows

C++ volatile关键字(多线程中声明为易变值不稳定值,告诉程序每次都从内存读取,不被编译优化,防止被优化后变量异常)