【发布时间】:2010-10-31 14:22:13
【问题描述】:
如何在Qt的windows环境下使用qDebug()打印线程id。
【问题讨论】:
标签: multithreading qt debugging
如何在Qt的windows环境下使用qDebug()打印线程id。
【问题讨论】:
标签: multithreading qt debugging
我假设您想要当前执行线程的线程 ID(而不是特定 QThread 对象的线程 ID):
qDebug() << QThread::currentThreadId();
需要考虑的事项:该方法返回一个特定于平台的 id(检查docs)。在 Windows 中,您不能将此 id 与 Win32 API 函数一起使用,因为它返回的是伪 id 而不是真正的线程 id。
如果您的应用程序只能在 Windows 中运行,并且您需要对线程 ID 做一些有意义的事情,那么最好使用 GetCurrentThreadId()。
【讨论】:
在 Windows 上,应用程序通常在您执行时从命令行“分离”。如果你添加
win32:CONFIG+=console
您的应用程序将阻止命令提示符,并打印 qDebug 语句。
【讨论】:
由于 QThread 的底层实现是 pthreads,因此您可以使用(我假设您想要一个可用的 ID)
pthread_t = pthread_self();
从正在执行的线程中。
从 QThread::currentThreadId() 返回的值是不可移植的。
【讨论】: