所以,我有以下一些示例代碼。使用的QThread沒有新
workerThread = new QThread();
m_worker->moveToThread(workerThread);
connect(workerThread , SIGNAL(started()), m_worker, SLOT(createObject()));
connect(m_worker, SIGNAL(created()), this, SLOT(objectReceived()));
workerThread->start();
它目前使用QThread通過使用新的初始化它。如果這是唯一的上下文中使用的,不能的話就用「的QThread的WorkerThread」,引用其地址進行連接,並且做些什麼?這可以節省程序將線程放在堆上。我發現,如果我不使用新的,使用我列舉的方式,我得到以下錯誤「的QThread:摧毀,線程仍在運行」。除了我列出的更改外,代碼中沒有任何更改。如果我使用新的,我不會得到這個錯誤。是否有重大差異?
包含此代碼的函數在線程終止之前是否返回? –
顯然你可以做到這一點,這在許多用戶案例中並不理想。如果你不想控制線程生存期,那麼使用堆棧分配。 – dtech
@MartinJames是的。我想那會把我帶到下一個問題:當程序結束時線程被破壞,還是最終泄漏? – edaniels