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++:优先处理线程以防止主线程被抢占的主要内容,如果未能解决你的问题,请参考以下文章
C++ volatile关键字(多线程中声明为易变值不稳定值,告诉程序每次都从内存读取,不被编译优化,防止被优化后变量异常)