Signal execution order with Qt::QueuedConnection

前端 未结 2 647
半阙折子戏
半阙折子戏 2021-01-12 01:36

I have two signals A and B emitted one after another from an object in thread X, and the two connected slots are in the Main thread. The connection is QueuedConnection (due

相关标签:
2条回答
  • 2021-01-12 02:18

    Both of your signals will be queued in a single event queue of the X thread, so corresponding slots will be executed in the order of signals were emitted.

    But in the following case you can't rely on the slots execution order:

    signal A connected to a slot in X thread
    signal B connected to a slot in Y thread
    

    Also, there is a Qt::BlockingQueuedConnection connection type. If you connect your first signal using it, your current thread will be blocked until the corresponding slot in another thread finishes its job.

    0 讨论(0)
  • 2021-01-12 02:32

    According to current QT sources (5.*) they will be dispatched in sequence they were emitted using FIFO algorithm. But as stated in comment there is nothing in documentation which specifies this order so I wouldn't suggest to relay on that behaviour.

    0 讨论(0)
提交回复
热议问题