4
A
回答
7
QThread
只是一个包装,在它使用本地线程的场景后面。
QThread::currentThread
如果它还不存在,则创建并初始化一个Q(Adopted)Thread
实例。
对于unix,它使用pthread
s。
#include <iostream>
#include <thread>
#include <pthread.h>
#include <QThread>
#include <QDebug>
void run() {
QThread *thread = QThread::currentThread();
qDebug() << thread;
std::cout << QThread::currentThreadId() << std::endl;
std::cout << std::this_thread::get_id() << std::endl;
std::cout << pthread_self() << std::endl;
thread->sleep(1);
std::cout << "finished\n";
}
int main() {
std::thread t1(run);
t1.join();
}
输出:
QThread(0x7fce51410fd0)
0x10edb6000
0x10edb6000
0x10edb6000
finished
我看到there是Qt应用程序主线程的初始化:
data->threadId = (Qt::HANDLE)pthread_self();
if (!QCoreApplicationPrivate::theMainThread)
QCoreApplicationPrivate::theMainThread = data->thread;
所以可能有一些副作用。
我建议不要混合QThread与非Qt线程。
相关问题
- 1. 在现有的非QT线程中创建QThread事件循环
- 2. 如何强制Qt更新来自非主线程的GUI
- 3. QThread线程池
- 4. Qt QProcess抱怨QThread ::开始,线程创建错误
- 5. Qt,如何暂停QThread
- 6. 从QThread类监视Qt GUI
- 7. Qt线程等待来自GUI的输入
- 8. C++ qthread同时启动2个线程
- 9. QThread - 使用插槽quit()退出线程
- 10. QThread内部自动删除QThread?
- 11. C++线程的Qt
- 12. 来自java.util.concurrent的线程
- 13. 从非托管dll中的QThread回调到托管C++主线程
- 14. Symbian qt线程
- 15. Qt多线程
- 16. 不能显示来自非UI线程的ProgressDialog。如何?
- 17. 使用QThread和线程模块进行Python多线程处理
- 18. Qt用QThread或QTimer逐个添加点?
- 19. 如何在QT中停止qThread
- 20. 从另一个(非qt)线程调用QObject方法的线程安全性?
- 21. Qt翻译来自非源文件的字符串
- 22. Qt:检测非转换的QString(不是来自tr())
- 23. 来自Qt的ssh命令
- 24. 来自QT的Octave:undefined参考
- 25. 来自Java程序的线程
- 26. get_user_pages_fast()来自内核线程
- 27. qt线程选项
- 28. Qt Jambi和线程
- 29. Qt内部线程
- 30. 帮助QT编程与QThread类,如何使用它
你为什么不试试看? – sashoalm 2013-04-25 07:27:12
你的意思是QThread :: currentThread()?还有一个问题:你为什么要那样做? – 2013-04-25 07:28:16
这可能是未定义的行为。 – sashoalm 2013-04-25 07:35:26