I am having difficulty grasping what happens when for eg. two different signals are connected to two different slots and when one slot is not done, the other slots' signal is emitted (for both slots connected to their respective signals in a direct connection) where the application only has "one" thread.
This is from the QT official documentation:
Direct Connection: The slot is invoked immediately, when the signal is emitted. The slot is executed in the emitter's thread, which is not necessarily the receiver's thread.
Queued Connection: The slot is invoked when control returns to the event loop of the receiver's thread. The slot is executed in the receiver's thread.
It says "immediately" for direct connection unlike the queued connection. Does that mean, if the second signal is emitted when the first slot is not done yet, the first slot will be interrupted and it will run concurrently with the second slot even though the application is a single threaded application? If so, why don't I see any warnings that one should use mutexes to lock variables that could be accessed by both slots.
Maybe I am misunderstanding the whole "Direct" and "Queued" connection thing.
QMetaCallEventto their context objects. That's all. - Kuba hasn't forgotten Monica