//线程处理函数
void MyThread::run()
{
isPause=true;
int i=0;
int n=0;
// bool ret=true;
qDebug()<<"isStop:"<<isStop;
while(false==isStop)
{
qDebug()<<"循环开始1";
mutex.lock();
qDebug()<<"循环开始2";
i++;
qDebug()<<i;
this->msleep(50);
this->sum+=i;
emit updateProgress(n,i);
qDebug()<<"子线程号:"<<QThread::currentThread();
// if(i==n && i>0)
// {
// i=0;
// }
mutex.unlock();
qDebug()<<"退出循环1";
}
// mutex.lock();
qDebug()<<"退出循环2";
}
//开始按钮
void Widget::on_btnStart_clicked()
{
if(myT->isRunning()==true && myT->isStop==false)
{
return;
}
qDebug()<<"线程开始";
ui->btnPause->setEnabled(true);
ui->btnResume->setEnabled(true);
ui->btnStop->setEnabled(true);
myT->isStop=false;
myT->start();
}
//停止按钮
void Widget::on_btnStop_clicked()
{
if(myT->isRunning()==false && myT->isStop==true)
{
return;
}
//停止线程
myT->pause();//暂停线程
//ui->lineEdit->clear();
qDebug() << "开始关闭线程";
//myT->quit();//停止线程
// myT->wait();//等待线程处理完手头工作
myT->isStop=true;
}
第二次点开始的时候,我发现就执行到循环1那句,后面都没执行,然后退出每次都卡死零,没有关闭线程