你好,以下是我的测试代码:
//之前已经连接信号槽:QObject::connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(onClicked()));
void MainWindow::onClicked()
{
m_pWorkThread->start(QThread::TimeCriticalPriority);
// doSomethingHeavy();
}
void MainWindow::doSomethingHeavy(void)
{
const int n=100000000;
for(int i=0;i<n;i++)
{
ui->progressBar->setValue((double)i/n*100);
for(int j=0;j<n;j++)
{
double tmp=i*i+j*j;
}
}
}
//QWorkThread继承自QThread
void QWorkThread::run ()
{
const long n=100000000;
for(long i=0;i<n;i++)
{
if(i%1000000)
emit completePercentage((double)i/n);
for(long j=0;j<n;j++)
{
double tmp=i*i+j*j;
}
}
emit completed();
}
两个基本相同的函数在主线程执行和新开的线程执行,效率差别很大,但依你的观点不应该有这样的差别,我一直想不明白其中的原因,还望多多指教!