如何降低 QT Gui 线程优先级
How to lower QT Gui thread priority?
我正在用linux设计一个嵌入式QT应用程序。我的应用程序的一部分是实时音频流,这是系统的重中之重,并且必须始终满足其实时截止日期。 我已将此线程设置为具有最大优先级的FIFO计划:
schparam.sched_priority = sched_get_priority_max(SCHED_FIFO);
pthread_setschedparam(pthread_self(),SCHED_FIFO, &schparam)
我需要我的 QT GUI 始终屈服并让这个实时过程具有优先权。所以我尝试将 QT GUI 线程优先级设置为
QThread::currentThread()->setPriority(QThread::LowestPriority);
然而,这仍然行不通。 如果我与 GUI 交互的时间过长,我的实时音频流就会流动。
我是否需要在此处设置其他优先级参数? 不幸的是,切换到实时内核不是一种选择。
如果您在 Linux 下运行,则可以创建一个脚本并在应用程序启动后运行该脚本。
以下示例脚本使用 chrt 更改 Qt 应用线程优先级。
若要使用以下脚本,需要修改脚本以更改"your_qt_app"名称。此外,在脚本中,我分配了your_qt_app线程以使用优先级为 10 的 FIFO 实时策略。您可以根据需要进行相应的调整。
此外,脚本中的"ps"命令可以帮助您分析系统进程/线程优先级。
#!/bin/bash
threads_to_change_prio="
your_qt_app
"
ps -Leo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm,args > ./threads_prio.txt
for i in $threads_to_change_prio; do
tids=$(cat ./threads_prio.txt | grep $i | awk '{print $2}');
for j in $tids; do
chrt -f -p 10 $j;
done
done
相关文章:
- 将更高的优先级设置为 boost::asio 线程处理进程
- asio::io_service 具有多个线程的优先级队列处理
- 如何使用 pthreads 以正确的方式设置两个线程之一的优先级
- C++互斥锁线程优先级
- 根据线程优先级/特权授予对资源的访问权限
- 如何在不需要 root 访问权限的情况下为应用程序中的线程设置相对线程优先级
- 在优先级最低的核心中运行线程
- 检查Linux功能以设置线程优先级
- 如何在Windows NT中获取线程的动态优先级
- 使用pthreads时的后台线程(不错,优先级)
- 如何降低 QT Gui 线程优先级
- 如何在Mac操作系统上设置线程优先级pthreads
- 如何在互斥锁中赋予特权线程优先级
- 尝试显示线程优先级时出现分段错误
- 从正在运行的进程设置线程优先级
- 在 C++11 中设置 std::线程优先级的便携式方法
- 在 C/C++ 中更改 Android 上的本机线程优先级
- 代码块和线程优先级
- c++多线程优先级实现失败
- 示例程序在pthread中模拟线程优先级