Qt似乎使用了很多线程

时间:2016-01-20 14:05:29

标签: c++ linux multithreading qt

我已经使用了很多Qt,但最近需要调试我一直在创建的线程,并且发现了更多线程,然后我期待。

所以我的程序只是一个简单的控制台(没有GUI)Qt应用程序(linux)。

我创建的主题:

  • 它有一个main()(执行QtCoreApplication) - 所以这是主线程。
  • 处理来自com端口的接收数据的线程(使用FTDI D2XX第三方代码驱动程序)

就是这样。当我做ps -T ...并找到我的应用程序时有7个线程。我有两个使用信号和插槽的QObjects类,所以他们可能需要一个用于消息处理的线程,这需要我4个线程...所以我不知道为什么我的应用程序可能有7个线程。

任何人都可以解释更多关于发生了什么的事情吗?可以根据需要发布代码。注意我只在代码中使用new QThread一次(暂时)。

1 个答案:

答案 0 :(得分:5)

Qt不会创建任何per - QObject个线程。它为某些特定于平台的原因创建了辅助线程,例如: QProcess有时需要辅助线程。

FTDI D2XX unix驱动程序使用libusb,并且该实现完全倒退,并在您为其提供的线程之上使用其他线程。坦率地说,你不应该在Linux或OS X上使用D2XX驱动程序。只需使用内核驱动程序。

您应该在一个简单的非Qt测试应用程序中运行D2XX驱动程序,该应用程序打开设备并连续读取它并查看它产生的线程数。你会感到沮丧......