QT中跨執行緒警告的處理
問題:
在繼承於QThread的類中, 出現了QUdpSocket成員時,編譯沒有問題, 執行時, 出現Cannot create children for a parent that is in a different thread.
理解:
繼承QThread後在實現run()函式後,new多執行緒物件並傳入this指標---注意此時的this指標是主執行緒的物件.
傳入this指標------相當於在子執行緒裡為主執行緒建立了物件,所以出現跨執行緒警告
另外QT中繼承Qthread類後,在類中定義的物件或或物件的指標都是屬於主執行緒的。次執行緒正真意義上的實體內容實在實現run()函式裡。
所以,要將mythread執行緒裡的物件或指標建立,需要在run()函式裡,建立或分配物件空間。
程式碼:
void Work_Thread::run()
{
_gClient = new CNCClient(QString("192.168.1.190"), 1001); // _gClient全域性變數,在此處建立就不會跨程式警告
_gClient->Connect();
while (m_bStart)
{
Position* cmd = popCmd();
if(NULL != cmd)
{
qDebug("ss");
if(cmd->run(_gClient))
{
delete cmd;
cmd = NULL;
msleep(100);
}
}
msleep(10);
}
}
相關文章
- QT執行緒同步與非同步處理QT執行緒非同步
- Netty中的執行緒處理EventLoopNetty執行緒OOP
- Qt中的多執行緒與執行緒池淺析+例項QT執行緒
- 【QT】 Qt多執行緒的“那些事”QT執行緒
- qt多執行緒QT執行緒
- QT執行緒的使用 moveToThread()QT執行緒thread
- mysql 5.7 執行緒阻塞處理MySql執行緒
- 執行緒安全處理之Threadlocal執行緒thread
- 如何處理執行緒死鎖執行緒
- PyQt應用程式中的多執行緒:使用Qt還是Python執行緒?QT執行緒Python
- QT 主執行緒子執行緒互相傳值QT執行緒
- Spring如何處理執行緒併發Spring執行緒
- Spring多執行緒事務處理Spring執行緒
- 前端多執行緒處理——async/await前端執行緒AI
- Qt 中多執行緒對應的訊號槽QT執行緒
- JDK執行緒池異常處理方式JDK執行緒
- 執行緒池異常處理的 5 中方式執行緒
- Java之執行緒安全問題的3種處理方式(通過執行緒同步)Java執行緒
- Java多執行緒並行處理任務的實現Java執行緒並行
- ThreadPoolExecutor執行緒池內部處理淺析thread執行緒
- 多工處理方式之二:多執行緒執行緒
- 66.QT-執行緒併發、QTcpServer併發、QThreadPool執行緒池QT執行緒TCPServerthread
- c#基礎,單執行緒,跨執行緒訪問和執行緒帶引數C#執行緒
- 初學者看過來:Python中多執行緒和多處理的指南Python執行緒
- tomcat連線處理機制和執行緒模型Tomcat執行緒模型
- JAVA多執行緒下高併發的處理經驗Java執行緒
- JAVA不使用執行緒池來處理的非同步的方法Java執行緒非同步
- 多執行緒理論執行緒
- 04 Windows批處理中的條件執行Windows
- 用 UI 多執行緒處理 WPF 大量渲染的解決方案UI執行緒
- YYWebImage 原始碼剖析:執行緒處理與快取策略Web原始碼執行緒快取
- 12_QT跨平臺執行之使用QT控制蜂鳴器QT
- 執行緒的中斷執行緒
- Java中的執行緒Java執行緒
- 【QT】QtConcurrent::run()+QThreadPool實現多執行緒QTthread執行緒
- java中執行緒池的生命週期與執行緒中斷Java執行緒
- 併發王者課-青銅9:防患未然-如何處理執行緒中的異常執行緒
- JVM中的執行緒行為JVM執行緒