0
在尝试QThreadPool之前,我认为多线程程序可能会有不确定的结果,具体取决于操作系统如何调度它。 但是,我的意见今天有所改变。QThreadPool是否有序地调度它的线程?
下面是main.cpp中的代码:
runnableInst *hInst = new runnableInst("StarWar");
runnableInst *thread = new runnableInst("BlackSmith");
QThreadPool::globalInstance()->start(hInst);
QThreadPool::globalInstance()->start(thread);
这里是run函数。
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类执行结果的随机线程?
你可以做的是用随机上限例如'rand()%1000000 + 1000000'(这给出一个介于1E6和2E6之间的数字)的大循环替换睡眠(100),并将一些伪造的浮动点内计算。这将为您提供从不空闲且具有不同运行时间的线程。 – rpsml 2012-08-16 10:01:51