Remember - there is not necessarily only one event loop in a program. Each thread can have its own event loop.

So if the data gets pushed from the thread to the main loop, and then moved back to the thread that is suppose to clean it up, but that thread's event loop doesn't have time to do so?

Is there any way to guarantee that the thread's event loop will be run for sure? (Since the cross-thread data movement doesn't necessarily trigger the thread's event loop, I think...not sure about how Qt internally does it...)