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執行緒非同步
- Qt 中的多執行緒QT執行緒
- Netty中的執行緒處理EventLoopNetty執行緒OOP
- Qt入門(9)——Qt中的執行緒支援QT執行緒
- IO處理執行緒執行緒
- Qt中的多執行緒與執行緒池淺析+例項QT執行緒
- java中多執行緒併發的處理方式Java執行緒
- 【QT】 Qt多執行緒的“那些事”QT執行緒
- qt多執行緒QT執行緒
- 如何處理執行緒死鎖執行緒
- mysql 5.7 執行緒阻塞處理MySql執行緒
- 多執行緒程式設計,處理多執行緒的併發問題(執行緒池)執行緒程式設計
- Android 中 EventBus 的使用(3):多執行緒事件處理Android執行緒事件
- PyQt應用程式中的多執行緒:使用Qt還是Python執行緒?QT執行緒Python
- QT 主執行緒子執行緒互相傳值QT執行緒
- Qt 中多執行緒對應的訊號槽QT執行緒
- boost中asio網路庫多執行緒併發處理實現,以及asio在多執行緒模型中執行緒的排程情況和執行緒安全。執行緒模型
- 執行緒安全處理之Threadlocal執行緒thread
- 【轉】JAVA處理執行緒超時Java執行緒
- Qt---多執行緒控制QT執行緒
- QT執行緒的使用 moveToThread()QT執行緒thread
- JDK執行緒池異常處理方式JDK執行緒
- Spring如何處理執行緒併發Spring執行緒
- 前端多執行緒處理——async/await前端執行緒AI
- Spring多執行緒事務處理Spring執行緒
- Java 多執行緒處理任務的封裝Java執行緒封裝
- Java之執行緒安全問題的3種處理方式(通過執行緒同步)Java執行緒
- Java多執行緒並行處理任務的實現Java執行緒並行
- (轉)Qt 的執行緒與事件迴圈QT執行緒事件
- java多執行緒:執行緒體往外丟擲異常的處理機制實踐Java執行緒
- 多工處理方式之二:多執行緒執行緒
- WPF快速指導12: 執行緒處理模型執行緒模型
- threading 多執行緒控制和處理thread執行緒
- Python自由之路(三)多執行緒處理Python執行緒
- Java執行緒:執行緒中斷Java執行緒
- c#基礎,單執行緒,跨執行緒訪問和執行緒帶引數C#執行緒
- C#中的執行緒(三)多執行緒C#執行緒
- 初學者看過來:Python中多執行緒和多處理的指南Python執行緒