一、线程概念
GUI线程与工作线程:每个程序启动后拥有的第一个线程称为主线程,即GUI线程。QT中所有的组件类和几个相关的类只能工作在GUI线程,不能工作在次线程,次线程即工作线程,主要负责处理GUI线程卸下的工作。
数据的同步访问:每个线程都有自己的栈,因此每个线程都要自己的调用历史和本地变量。线程共享相同的地址空间。
1.Qt主线程
Qt的主线程是唯一运行创建QApplication对象并调用exec()的线程,主要用于界面显示,因此又被称为GUI线程。
2.Qt子线程
Qt的子线程用于一些耗时操作,因此又被称为工作线程。
子线程不能用于直接刷新界面(QWidget不可重入,QObject可重入)。
若子线程企图修改界面控件,可通过线程间通信的方式:Qt的信号槽机制是跨线程的,因此可以用作线程间通信。
主线程是唯一允许创建QApplication或者QCoreApplication对象的,并且调用exec()。exec()启动了事件循环,一直在等待接收并且处理一个个Qt封装好的事件,比如鼠标移动事件,键盘按下事件等等。所以只有在主线程里你才可以方便利用各种Event去完成自己想要实现的需求。所以就限制你必须在主线程作UI相关操作。
除了规定,往根源说,再多的线程,实质上对于CPU来说,也是一件一件的处理,并不是我们凭空现象的同时处理。只是可以“智能”的处理一下当前迫切需要的数据,然后可以随时暂停,再去处理更加迫切的。如果2个线程
版权声明:本文为qq_39262215原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。