QT中线程安全退出实例

64 篇文章 10 订阅
37 篇文章 18 订阅

1、QThread安全退出

线程创建以及退出示例
创建
    TestObject* object = new TestObject;
    QThread* thread = new QThread;
    object->moveToThread(thread );
    connect(thread,&QThread::finished,object,&TestObject::deleteLater);    // 退出后释放TestObject对象资源
    connect(thread,&QThread::finished,thread,&QThread::deleteLater);    // 退出后释放QThread对象资源
    thread->start();
退出
    thread->quit();    // 也可以使用thread->exit(0);
    thread->wait();
    thread = nullptr;
    object = nullptr;

2、QThread类的finished信号

thread->start();调用的函数完成后才会发出finished信号。可以是QThread::Run函数,也可以是自己定义类TestObject::ABC的Run函数完成退出后发出finished信号。
/******************************

          QThread* th=new QThread();
          Work* work=new Work();
          work->moveToThread(th);
          work->start();
          MySig ms;   //ms局部变量栈自动释放,用来向work发送信号执行异步线程工作      
 connect(th, &QThread::finished, work, &QObject::deleteLater);//线程结束释放工作类         
 connect(th, &QThread::finished, th, &QObject::deleteLater);//线程结束释放线程指针           QObject::connect(work,&Work::SigExitThread,th,&QThread::exit);//退出线程,work类中声明一个信号,用来触发线程退出的,这个信号一般是在work中函数执行完毕时发送,可以放在Fun1的函数结尾
            QObject::connect(&ms,&MySig::Sig_WorkFunc1,work,&Work::Func1);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值