When signals are emitted from the threads different from the one the receiver lives in, the Qt::QueuedConnection is used. As AhmedAEK answered in the comments under the question, "emit" is thread-safe but not atomic. Therefore, if we need the slots to be synchronized with each other regarding the signals they are processing, we need to synchronize access to "emit" from different threads. In other words, this case
is there a possibility that event loop triggers A's slot with "true" and then "false" and B's slot with "false" and then "true"?
is possible if access to the emit of this signal is not synchronized and impossible otherwise.