1. 程式人生 > >qt中的執行緒 擁有權 一個物件屬於哪個執行緒

qt中的執行緒 擁有權 一個物件屬於哪個執行緒

一個物件的執行緒就是建立該物件時的執行緒,而不論該物件的定義是儲存在那個執行緒中;

子執行緒中定義的物件的情況:( 其實也好理解,子執行緒中,建立otherObj的時候,不再run()函式中,所以,otherObj物件不屬於MyTHread )
1 2 3 4 5 6 7 8 9 10 11 12 13 classMyThread:publicQThread { public: MyThread() {
//因為該建構函式屬於主執行緒,所以,otherObj依附於主執行緒,即屬於主執行緒,而不屬於子執行緒MyThread,這是關鍵
otherObj=newQObject; } private: QObject*otherObj; };

在我們建立了MyThread物件之後,otherObj的執行緒依附性是怎樣的?是不是就是MyThread所表示的那個執行緒?

要回答這個問題,我們必須看看究竟是哪個執行緒建立了它們:實際上,是呼叫了MyThread

建構函式的執行緒建立了它們。因此,這些物件不在MyThread所表示的執行緒,而是在建立了MyThread的那個執行緒中。即主執行緒,

我們可以通過呼叫QObject::thread()可以查詢一個QObject的執行緒依附性。

主執行緒中的情況,

Threadthread; Objectobj;

obj物件屬於主執行緒, thread物件也屬於主執行緒,