gpt4 book ai didi

c++ - 具有增加的所有者线程优先级的同步原语

转载 作者:行者123 更新时间:2023-12-02 10:00:31 27 4
gpt4 key购买 nike

我有一个程序,其中有时会发生突发事件,以便线程在可能的情况下将CPU负载超过100%,但实际上,它们为CPU而战。至关重要的是,获得同步原语所有权的线程比应用程序的其他线程具有更高的优先级,以防止线程获得所有权并被调度程序暂停的情况。在C++(最新的草案)或WinAPI中是否有合适的同步原语,还是我必须将互斥锁代码包装在SetThreadPriority()调用中?

最佳答案

这实际上不是问题。如果拥有同步原语的线程被调度程序暂停,那仅仅是因为有足够的随时运行的线程来保持所有内核繁忙。在那种情况下,没有特别的理由去关心哪个线程运行。
等待同步原语的线程尚未准备好运行。因此,如果您有四个核心,并且没有阻塞持有同步原语的线程,那只能是因为有四个线程都准备好运行,它们可以在不持有同步原语的情况下向前发展。在那种情况下,运行这四个线程与运行包含同步原语的线程一样好。
我强烈敦促您不要搞乱线程优先级,除非您真的别无选择。一旦开始弄乱线程优先级,上面的参数就会停止成立,因为您会遇到诸如优先级倒置之类的问题。但是,如果您不搞乱线程优先级,那么您就不会遇到这类问题,并且调度程序将足够聪明,可以在99%的时间内完成正确的事情。尝试弄乱优先级以使其正确执行,这可能会持续1%的时间适得其反。

关于c++ - 具有增加的所有者线程优先级的同步原语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62723181/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com