加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 使用pthread时的后台线程(不错,优先级)

发布时间:2020-12-16 05:02:45 所属栏目:百科 来源:网络整理
导读:我有一个GUI应用程序,它使用pthreads进行一些繁重的后台处理. 在后台处理正在运行时,GUI非常无响应,我认为这是因为后台线程正在耗尽CPU时间. 在Windows上你可以在后台线程上设置:: SetThreadPriority(hThread,THREAD_PRIORITY_BELOW_NORMAL),一切都很好. 但
我有一个GUI应用程序,它使用pthreads进行一些繁重的后台处理.

在后台处理正在运行时,GUI非常无响应,我认为这是因为后台线程正在耗尽CPU时间.

在Windows上你可以在后台线程上设置:: SetThreadPriority(hThread,THREAD_PRIORITY_BELOW_NORMAL),一切都很好.

但是在Linux上我使用的是pthreads,我找不到一个好的选择.

我已经考虑过了;

> :: sched_setscheduler(SCHED_FIFO)或:: sched_setscheduler(SCHED_RR) – 这是不可行的,因为它需要root(对我的GUI应用程序不好) – 这也会使GUI线程拥有太多的CPU;我只希望GUI优先于后台线程.
> :: pthread_setschedparam但是当使用不支持SCHED_FIFO或SCHED_RR以外的任何东西时(:: sched_get_priority_min(SCHED_OTHER)和:: sched_get_priority_max(SCHED_OTHER)都返回0)
>有多个进程并使用:: nice. GUI和后台线程之间存在太多耦合以使其可行(并且为此设计移植如此多的代码是一项大量工作)
>使用:: setpriority重新调整后台线程.这确实有效 – 但是直接反对文档所说的内容:PThreads documentation(因此可能会在以后的系统中“修复”)

我确信这是GUI应用程序的一种常见模式,所以我错过了什么?

马库斯.

编辑:添加:: setpriority到选项列表(感谢ZalewaPL)

解决方法

将后台线程的良好值设置为更高的值可能会有所帮助.
参考:
Nice-Level for pthreads?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读