2012-09-10 118 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()....}在這兩個函數中,似乎你是對的。 –

相關問題