Ovako
1. Interni thread koji QThread klasa sadrzi se kreira sa PTHREAD_CREATE_DETACHED, joinable state (pthread_join) se simulira
sa QThread::wait, ako se dobro secam, najverovatnije zbog internog event loop-a koji QThread poseduje.
2. Sto se tice upotrebe mutexa i/ili sinhronizovanja pristupa deljenoj memoriji stvari stoje ovako: pristup i manipulacija svim implicitno deljenim klasama (QString, QImage i sve ostale koje imaju implicit sharing) se moze
obaviti bez zakljucavanja/sinhronizovanja iz vise razlicitih niti, sto znaci da se sve klase ovog tipa posmatraju kao reentrant, (ali ne i thread-safe, za pristup istom objektu se opet mora koristit lock

). U svakom drugom slucaju se mora koristit neka vrsta sinhronizacije (QMutex, QWaitCondition, QSemaphore,...)
3. Emitovanje signala ne bi trebalo lock-ovati (Qt vrsi neku vrstu serijalizovanja istih ako se tacno secam), ali je potrebno sinhronizovati slot koji prima signal sa ostalim nitima (posebno sa glavnim GUI thread-om)
4. Ovo je vec odgovoreno
Postoji jos nekoliko bitnih stvari, sve objekte izvedene od QWidget i ostalih GUI klasa nije moguce kreirati u
jednom thread-u, a pozivati funkcije iz drugog, preciznije sve GUI klase se mogu koristiti samo iz glavnog GUI thread-a.
Sto se tice mandelbrot/fraktal primera, pretpostavljam (posto nemam src isped sebe, ali se secam kako izgleda

)
da se vrsi sinhronizacija izmedju worker thread-a i glavnog GUI thread-a (bas iz razloga koji sam naveo gore),
gde worker racuna fraktal, pa obavestava gui thread da moze da ga iscrta na formi (ili tako nesto)