我正在使用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似乎没有帮助。
答案 0 :(得分:3)
运行的文档说,
在单独的线程中运行函数。线程取自 全球QThreadPool。请注意,该功能可能无法立即运行; 该函数仅在线程可用时运行。
无法保证每次运行调用都将在另一个线程中运行。函数运行得如此之快,它们都可以由同一个线程顺序处理。尝试在thread_process_1中进行一次sleep调用,以查看函数是否被不同的线程拾取。