QT保持的最佳线程并发数(信号与槽+progressBar读数)

非QThreadPool使用

利用线程结束信号 连接槽 产生新的线程 产生传递如果数组可利用UI中的进度条值, 并发最佳数量 ,完成1个,触发槽开一个新线程 直到结束;


 // idealThreadCount () 返回当前操作系统能运行线程的数量  
      for(int i=0; i<Thread::idealThreadCount(); i++){    
            threadRoute[i] = new Thread(ipScan[i],port,timeout);//创建线程 并传参数 
            connect(threadRoute[i],SIGNAL(threadReturn()),this,SLOT(threadEnd())); //threadReturn()为线程结束emit信号 (自己写的,也可用QT的finished () 信号)
        } //线程结束 触发槽 threadEnd()


        for(int i=0; i             threadRoute[i]->start(QThread::LowestPriority); //开始run运行
        }




触发槽 
threadEnd(){
qint32 tmp = ui->progressBar->value();//利用UI界面中进度条度数数, 之前设置需要总共需要完成的数量 ui->progressBar->setMaximum(numIpScan);
ui->progressBar->setValue(tmp+1);
if( tmp  == numIpScan ){
        ui->progressBar->setValue(1);
        return;
    }
threadRoute[tmp +idealThreadCount()] = new Thread(ipScan[tmp +idealThreadCount()],port,timeout);
threadRoute[tmp +idealThreadCount()]->start(QThread::LowestPriority);


}

你可能感兴趣的:(QT保持的最佳线程并发数(信号与槽+progressBar读数))