From what I understand, The signal/slot message system is implemented per thread. Hence, every QObject needs to "belong" to a certain thread in order to operate correctly in a multithreaded environment.
This is great for scenarios in which every object is processed by one thread only. But, what happens when we have a thread pool processing various QObjects? The signal/slot mechanism will no longer work as the QObjects will be constantly migrating across threads.
What I propose, instead, is to move the message dispatch system to the QObject. This way, we can handle pending messages using QObject::ProcessMessages or similar.
What are your thoughts on this?