是否可以为主 GUI 线程设置优先级,使其与其他线程(QThread)相比具有更高的优先级?
我的目标是在其他线程进行一些可能占用 CPU 到 100% 负载的密集计算时不要冻结 GUI。如果有人可以分享一种方法来确保 GUI 在此期间不会冻结,而其他计算线程仍然可以尝试最大化 CPU 使用率,那就太好了。
我考虑过管理其他线程,所以我不会同时启动太多计算线程。
是否可以为主 GUI 线程设置优先级,使其与其他线程(QThread)相比具有更高的优先级?
我的目标是在其他线程进行一些可能占用 CPU 到 100% 负载的密集计算时不要冻结 GUI。如果有人可以分享一种方法来确保 GUI 在此期间不会冻结,而其他计算线程仍然可以尝试最大化 CPU 使用率,那就太好了。
我考虑过管理其他线程,所以我不会同时启动太多计算线程。
当前线程为gui线程时改变当前线程的优先级:
int main(int argc, char ** argv) {
QApplication app(argc, argv);
QThread::currentThread()->setPriority(QThread::HighPriority);
...
}
您也可以从任何其他线程提交更改——只要主(GUI)线程有一个正在运行的事件循环:
QMetaObject::invokeMethod(qApp, []{
QThread::currentThread()->setPriority(QThread::HighPriority);
});