簡體   English   中英

使用Qt :: QueuedConnection的信號執行順序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM