I do not explicitly call exec() in the run method. However according to the docs: " By default, run() starts the event loop by calling exec()" So I assume that all threads would have an event loop. Is that a bad assumption and should I explicitly call "exec()" in each run() function?