qt中的執行緒 擁有權 一個物件屬於哪個執行緒
阿新 • • 發佈:2018-12-30
一個物件的執行緒就是建立該物件時的執行緒,而不論該物件的定義是儲存在那個執行緒中;
子執行緒中定義的物件的情況:( 其實也好理解,子執行緒中,建立otherObj的時候,不再run()函式中,所以,otherObj物件不屬於MyTHread )
建構函式的執行緒建立了它們。因此,這些物件不在
子執行緒中定義的物件的情況:( 其實也好理解,子執行緒中,建立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物件也屬於主執行緒,