Qt在后台工作时会创建多少个线程?

4
我经常使用qt。我想知道一些事情:Qt在后台处理信号和槽等任务时会创建多少个线程?另外,任何GUI工具包都会创建事件线程(我记得Java也是这样)。Qt也会创建一个吗?
编辑:当我说“多少个线程”时,我真正想知道的是哪些线程。
谢谢, jrh
3个回答

8

Qt的信号和槽并不是使用多个线程实现的,它们只是处理事件分发的一种方式。

你可以运行程序,使用你喜欢的操作系统工具(例如Windows上的任务管理器)计算线程数量,看看是否与你预期的相符。我不会期望Qt创建任何额外的线程,除非你要求它这样做。


3
如Greg所提到的,信号和槽不使用线程。一般情况下,Qt不会创建线程来在后台执行任务,除了以下情况:
  • 网络代码可以创建一个线程来进行DNS查询。

  • 当您初始化QThreadPool(或首次使用它)时,QThreadPool将创建N + 1个线程,其中N是CPU核心数。

祝好!

3

QFileSystemModel 使用单独的线程来填充自身,因此在查询文件系统时不会导致主线程挂起。


(说明:该段内容介绍了 QFileSystemModel 类使用单独线程填充自身,以避免查询文件系统时导致主线程挂起。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接