我正在用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似乎帮不上什么忙。
发布于 2012-09-10 10:36:41
run的文档说,
在单独的线程中运行函数。线程取自全局QThreadPool。请注意,该函数可能不会立即运行;该函数仅在线程可用时运行。
不能保证每个要运行的调用都会在不同的线程中运行。有可能这些函数运行得如此之快,以至于它们都是由同一个线程顺序处理的。尝试在thread_process_1中进行休眠调用,以查看函数是否随后被不同的线程拾取。
https://stackoverflow.com/questions/12344650
复制相似问题