QT类学习系列(6)- Qt多线程的简单实现以及不能同时处理UI的操作

来源:互联网 发布:杭州创业软件 编辑:程序博客网 时间:2024/06/08 15:09

一:

Qt---多线程的简单实现 -大隐隐于市 - CSDN博客  

http://blog.csdn.net/u012319493/article/details/51804244

 

二:

qt为什么只能在主线程里进行UI操作_百度知道  

https://zhidao.baidu.com/question/139505057752132085.html

->

qt为什么只能在主线程里进行UI操作

的确是这样。主线程是唯一允许创建QApplication或者QCoreApplication对象的,并且调用exec()exec()启动了事件循环,一直在等待接收并且处理一个个Qt封装好的事件,比如鼠标移动事件,键盘按下事件等等。所以只有在主线程里你才可以方便利用各种Event去完成自己想要实现的需求。所以就限制你必须在主线程作UI相关操作。
除了规定,往根源说,再多的线程,实质上对于CPU来说,也是一件一件的处理,并不是我们凭空现象的同时处理。只是可以智能的处理一下当前迫切需要的数据,然后可以随时暂停,再去处理更加迫切的。如果2个线程同时处理UI显示,一个线程正在用于和用户交互更新显示,另外一个线程就只能是等待状态,并不能完成我们所期望的同时刷新UI的期望。
所以,基本上大部分应用开发框架都限制更新、创建UI必须在主线程里完成,而逻辑运算可以匹出新线程去完成。

多线程,越方便越快捷也就越容易隐藏bug,多线程间数据同步很容易搞乱,互斥量、读写锁、信号、共享等等。想要多线程同步处理UI更新,你也要给伟大的框架开发程序员们一些时间呵呵……

 

 

qt为什么只能在主线程里进行UI操作?-CSDN论坛  

http://bbs.csdn.net/topics/390155610/

------>

子线程,一般处理数据用的。

 

多线程同时对UI操作,基本上都不行吧,
QT线程中new个UI表示该UI所属线程是new的那个,需要改变UI的线程所属后才能和其他UI使用事件循环,处理什么的。

 

Qt而言,一个进程里和窗口系统(譬如Win32的GDI, linux下的X11)UI事件关联的只有主UI线程,而并没有设计成多线程和系统窗口系统同时交互(复杂性,安全性,性能等原因),这应该是根源。

原创粉丝点击