簡體   English   中英

如果在同一個線程中同時發出兩個信號,槽執行的順序是什么?

[英]What will the order of slot execution if two signals are emitted at the same time in same thread?

我正在嘗試理解 HMI 的代碼(基於 QT 的應用程序)。 通常在嵌入式軟件中,多個 ECU 同時向 UI 發送數據。

如果兩個信號在同一個線程中同時觸發,則以哪種順序連接到 2 個不同的信號的 2 個不同的插槽(2 個不同的 UI 類)?

它們是並行執行的嗎? (我想不可能,因為圖片中只有 1 個線程)

UI 類通常應該在主線程中處理,並且只有在工作線程中會阻塞 UI 的繁重計算。

因此,默認情況下,您將隨后執行它們,並且在理想設計中肯定不能並行。

是的,你是對的,單線程沒有並行性。

即使涉及多個線程,如果接收器位於不同的線程中,您也只會看到真正的並行性。

有關各種連接類型的更多信息,請參閱官方 Qt 文檔

如果兩個信號在同一個線程中同時觸發,則以哪種順序連接到 2 個不同的信號的 2 個不同的插槽(2 個不同的 UI 類)?

當從同一個線程發出兩個信號時,不可能同時發出。 所以信號一個接一個地發出。

當使用 Qt::DirectConnection 或兩個接收者對象與發送者在同一個線程中時,槽執行順序與信號發射順序相同。

始終建議不要依賴插槽執行的順序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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