Hello, basically I am writing an application (client) that communicates with a server, which I did not write; and I want all the calls to be asynchronous. So I create two threads, a GUI thread and then the mainloop thread (mainloop uses server code, does not use QThread, communicates through QSockets). That all works perfectly. However, there is one job that my client does that takes a lot of cpu, so I wanted to offload it onto a third worker thread. However, the worker thread needs to make a call to the mainloop thread which then redirects to the gui thread. So like:

OpenThread(Worker) -> getStuff(mainloop) -> useStuff(gui)

However, if I place exec() after the call to getStuff then I get QSocket problems, but if I put it before then nothing happens. Does anybody have any idea as to how I could make this work?