QThread详解:http://blog.sina.com.cn/s/blog_a6fb6cc90102vs8z.html
QThread
只有run
函数是在新线程里的
调用QThread
的非run
函数修改某个变量时,这个变量在run函数中也会用到注意加锁保护。
线程的终止:terminate不安全,自定义变量进行判断是否退出加锁。
在QThread
执行start
函数之后,run
函数还未运行完毕,再次start
会出现什么后果?
答:不会发生任何结果,QThread
还是继续执行它的run
函数,run
函数不会被重新调用。虽然在线程未结束时调用start
不会出现什么结果,但为了谨慎起见,还是建议在start之前进行判断。
在线程运行过程调用quit函数有什么效果
答案是:不会发生任何效果,QThread
不会因为你调用quit函数而退出正在运行到一半的run,正确退出线程的方法上面有介绍。那quit到底有什么用的呢,这要到下篇才能看出它的作用。使用moveToThread方法执行多线程时,这个函数将有大作用。
程序在退出时要判断各线程是否已经退出,没退出的应该让它终止
如果不进行判断,很可能程序退出时会崩溃。如果线程的父对象是窗口对象,那么在窗体的析构函数中,还需要调用wait
函数等待线程完全结束再进行下面的析构。
把线程的finished
信号和object的deleteLater
槽连接,这个信号槽必须连接,否则会内存泄漏,delete不安全。