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