在尝试 QThreadPool 之前,我认为多线程程序可能会有不确定的结果,这取决于操作系统如何调度它。不过,今天我的看法发生了一些变化。
这是 main.cpp 中的代码:
runnableInst *hInst = new runnableInst("StarWar");
runnableInst *thread = new runnableInst("BlackSmith");
QThreadPool::globalInstance()->start(hInst);
QThreadPool::globalInstance()->start(thread);
这是运行功能。
void runnableInst::run()
{
// while(1) {
for(int i = 0; i < 50; ++i) {
qDebug()<<"CurrentThread="<< QThread::currentThread();
qDebug()<<threadName + " is outputing. Count="<<i;
Sleep(100);
}
}
这是结果的一部分。
看来这两个线程是按照加入线程池的顺序运行的。这是否意味着我们不会有使用类 QThreadPool 的随机线程执行结果?