[英]How to control the order of execution of two thread accessing the same shared data
[英]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.