【发布时间】:2014-01-04 04:16:31
【问题描述】:
当我用最少的代码启动一个新的 Qt 应用程序并运行它时,我看到有许多线程在运行,最少为 2,最多可有 5 个。它通常稳定在 2 , 直到我拖动窗口,此时我看到多达 4 个线程正在运行。
这是我正在使用的所有代码:-
#include <QApplication>
#include <QWidget>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget mainWindow;
mainWindow.show();
return a.exec();
}
谁能解释为什么会有不同的线程以及它们可能用于什么?最初我只希望有一个,但如果用一秒钟来处理消息也不会感到惊讶。但是,其他线程的原因是什么?
【问题讨论】:
-
所有用户代码默认在主线程中执行。可能还有其他线程,但它们被 Qt 的内部实现或调试器使用。当你编写普通的应用程序时,你不需要考虑其他线程。除非您使用 Qt API 创建新的用户线程,否则所有与事件、信号或插槽相关的代码都将在主线程中执行。
-
@tebe,从问题中的代码可以看出,没有使用计时器。你看到的所有代码都在那里。
-
@PavelStrakhov,“当你编写普通应用程序时”——我的主应用程序不是所谓的“普通”应用程序,所以我正在创建一个测试应用程序来查看线程发生了什么,但不是没想到会从这么少的代码中看到 5 个线程。
-
如果您开始担心 QT 内部使用的线程数,那么您做错了。如果没有其他原因,那么因为它是内部实现,并且可以随时更改。当然,除非您出于好奇而想知道这一点……
-
@yosim,我不担心;这是一项研究,有趣的是,还没有人能够回答这个问题。