[英]Signal execution order with Qt::QueuedConnection
我從線程X中的對象一個接一個地發出兩個信號A和B,並且兩個連接的槽位於主線程中。 連接是QueuedConnection(由於多線程連接)。 我的問題是:在調用插槽時信號的順序是否受到尊重,或者它們是否有可能以任意順序執行?
兩個信號都將在X線程的單個事件隊列中排隊,因此將按照發出的信號順序執行相應的槽。
但在以下情況下,您不能依賴插槽執行順序:
signal A connected to a slot in X thread
signal B connected to a slot in Y thread
此外,還有一個Qt::BlockingQueuedConnection
連接類型。 如果使用它連接第一個信號,則當前線程將被阻塞,直到另一個線程中的相應插槽完成其工作。
根據當前的QT源(5. *),它們將按順序發送,它們是使用FIFO算法發出的。 但正如評論中所述,文檔中沒有任何內容指定此順序,因此我不建議繼續該行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.