在Qt下,創建的QObject子類,使用moveToThread()方法,引入到子執行緒處理;
例如:
class A : public QObject
{
//比如實作tcpSocket的接收和發送,以及資料的處理等等。。。
}
此時,需要用到該類來創建兩個執行緒,分別處理資料;
如,頭檔案申明:
A *a1;
A *a2;
創建執行緒:
a1 = new A;//不指定父類
QThread *thread1 = new QThread(this);
a1->moveToThread(thread1);
thread1->start();
//通過信號與槽實作多執行緒處理資料。。。
a2 = new A;//不指定父類
QThread *thread2 = new QThread(this);
a2->moveToThread(thread2);
thread2->start();
//通過信號與槽實作多執行緒處理資料。。。
問1.如上的方式,可否實作呼叫同一個類的處理資料槽函式,來處理兩個子執行緒a1和a2下的資料呢?我的怎么有時候a1執行緒可以處理,a2執行緒能接收到socket資料,但是不會去處理呢?正確的實作兩個子執行緒的方式是如何呢?
問2.在該類A中,如果要放到子執行緒處理,是否也需要通過A發出的信號來鏈接A的槽函式;也即在A類中直接呼叫類的方法函式,是否在主執行緒中處理的?
謝謝!
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/231776.html
標籤:Qt
