QtConcurrent 运行的线程 id

Posted

技术标签:

【中文标题】QtConcurrent 运行的线程 id【英文标题】:Thread id of QtConcurrent run 【发布时间】:2012-09-10 02:13:04 【问题描述】:

我正在用 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】:

运行文档说,

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

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

【讨论】:

以上是关于QtConcurrent 运行的线程 id的主要内容,如果未能解决你的问题,请参考以下文章

从qt中的另一个线程运行qtconcurrent时如何关闭程序

QtConcurrent 与多线程 QThread 的多线程性能

Qt多线程:QtConcurrent + QFuture + QFutureWatcher

QtConcurrent::run 发出信号

qt 创建线程

停止由 QtConcurrent::run 启动的线程?