项目场景:
项目场景:多线程新手。在基于QT开发的某项目中,想要实现点击Button创建线程加入线程池中运行的功能。但在测试过程中发现点击按钮后UI界面会锁死,直到所有线程完成工作后才会解锁。网上搜索相关问题无果后自己排查。
原因分析与解决方法:
原因很简单,就是把pool声明在槽函数中了。槽函数结束要释放所有的局部变量,但是pool中有的线程还没结束无法释放,所以就卡死在这里了。放在一个不会被释放的位置,比如构造函数中,就解决了。
#include <QThreadPool>
MainWidget::MainWidget(QWidget *parent):QMainWindow(parent)