4

我正在用 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 似乎没有帮助。

4

1 回答 1

4

运行文档说,

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

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

于 2012-09-10T02:36:41.007 回答