2012-09-10 80 views
3

我在用QT做多线程程序。QtConcurrent run的线程ID

我使用此代码来尝试它是否按照我的预期行事。

QFuture<void> t1 = QtConcurrent::run(thread_process1, (void *)this); 
QFuture<void> t2 = QtConcurrent::run(thread_process2, (void *)this); 

两者thread_process1和2只有一条线是

qDebug()<<"thread id: "<<QString("%1").arg((int) QThread::currentThreadId(), 0, 16) ; 
然而

,他们都表现出 线程ID: “ffffffffb6085b40”

我是这样做不对? QFutureWatcher似乎没有帮助。

回答

3

的运行文档说,

运行在一个单独的线程运行。该线程取自全局QThreadPool的 。请注意,该函数可能不会立即运行;该函数仅在线程可用时运行。

不能保证每次调用运行都会在不同的线程中运行。函数运行速度可能很快,它们都由相同的线程按顺序处理。尝试在thread_process_1中输入一个睡眠呼叫,以查看这些函数是否被不同的线程拾取。

+1

thx,我尝试while(1){qDebug()....}在这两个函数中,似乎你是对的。 –

相关问题