QtConcurrent运行的线程ID

时间:2012-09-10 02:13:05

标签: multithreading qt qtconcurrent

我正在使用QT进行多线程程序。

我使用此代码来尝试它是否符合我的预期。

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似乎没有帮助。

1 个答案:

答案 0 :(得分:3)

运行的文档说,

  

在单独的线程中运行函数。线程取自   全球QThreadPool。请注意,该功能可能无法立即运行;   该函数仅在线程可用时运行。

无法保证每次运行调用都将在另一个线程中运行。函数运行得如此之快,它们都可以由同一个线程顺序处理。尝试在thread_process_1中进行一次sleep调用,以查看函数是否被不同的线程拾取。