On quinta-feira, 25 de fevereiro de 2016 07:55:54 PST André Somers wrote:
> Op 24/02/2016 om 18:23 schreef Thiago Macieira:
> Would it be possible to circumvent this issue by moving the thread
> object onto its own thread too?
> 
>     Foo() : QObject(nullptr) {
>        moveToThread(&m_thread);
>        m_thread->moveToThread(m_thread);
>        m_thread.start();
>     }
> 
> 
> Looks like the much debated move-QThread-onto-its-own-thread
> antipattern, but it's not the same obviously.

No, that is exactly the "you're doing it wrong" pattern. It's just hidden by 
the fact that you moved it from outside the class, so you didn't use "this".

And like Prav said, this doesn't solve much. Foo's destructor must run inside 
that thread, so that thread hasn't exited. If the destructor tries to wait() 
for the thread to exit, it will deadlock.

The solution is to move the Foo object to another thread before destroying it.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to