Qt 线程 学习笔记2

Qt 线程
一、重写run函数
函数体运行不结束
while,循环
处理相关功能需求
数据保护
QMutex 互斥锁
退出与析构
函数运行结束
注意点
this 和run 不是一个线程,run函数中new时,不能使用另外一个线程的变量作为父指针
this触发的槽,执行的线程不是run函数所在线程
槽函数中和run函数中使用的变量,是跨线程使用,需要上锁
二、QThread 指针new,然后start,moveToThread到子线程
事务处理
1.QThread 指针
子线程
2.start
启动线程,在生命周期内都有效
3.需要在子线程处理的相关QObject, 都moveToThread 到子线程中
保证触发的槽,都在子线程中
4.一个事务处理完成了,才会处理下一个事务
使用信号和槽的机制触发事务
数据保护
QMutex 互斥锁
退出与析构
相关的QObject都处理结束,并delete后,再delete子线程指针
注意点
跨线程使用时,使用信号和槽
如果跨线程使用变量,要上锁
三、继承QThread,start或exec,moveToThread(this)
是第二种方式的一种特例
初学者不建议这样用,把控难度较高,不容易控制,一旦有个函数阻塞住,会影响后续所有函数,可以先对线程有更多的了解了,再使用这种方式。
可以看看我的另外一个博客:QT moveToThread学习记录

脑图如下: Qt 线程 学习笔记2_第1张图片

你可能感兴趣的:(Qt,qt)