[Development] Community effort in updating Qt5 docs -- QThread focus

João Abecasis joao at abecasis.name
Sat Sep 29 20:00:49 CEST 2012


Chris Meyer wrote:
> The documentation promotes the idea of using 'moveToThread' as a
> preferred threading mechanism. However, we've found that moveToThread
> is full of pitfalls.
>
> Particularly, an object must be deleted on the thread on which it
> resides. This makes it difficult to manage the lifetime of objects
> that have been moved to a thread via moveToThread. You need to
> configure an independent mechanism to delete objects that have been
> moved to thread (i.e. send a signal to the thread that it's about to
> shutdown and allow the objects to deleteLater within the thread, which
> also implies that you need to keep track of the objects that are
> within the thread, which somewhat defeats the apparent simplicity of
> moveToThread). Also, you cannot use the finished signal from the
> thread since the thread will already be gone by then.

Since Qt 4.8 you can connect QThread::finished to QObject::deleteLater
and it should do the right thing in the appropriate thread.

> The bug will show up intermittently and differently on various
> platforms and is difficult to debug if you don't know about the
> problem. You'll just end up with spurious crashes (typically at quit
> time), especially for networking objects.

Cheers,


João



More information about the Development mailing list