普通的 GUI 庫,在非主線程裡操作 UI ,是「必然」會出錯還是「有很大的概率」會出錯?

時間 2021-06-01 15:36:18

1樓:

如果是Windows GDI的GUI,並且合理的設計架構的話(比如當前主線程卡死了,你又開個執行緒專門繪製介面),很大機率不出錯~

除此之外,很大機率出錯~

但是但是但是,多執行緒寫UI,往往不是因為資源什麼的出不出錯,而在於互動輸入輸出的一致性,前者你硬上鎖的話,除了沒意義和慢,並沒有什麼問題,後者如果互動的輸入輸出不統一在乙個執行緒中,互動的邏輯很可能亂作一團,成為死邏輯。

2樓:楊林

有很大的概率會出錯,因為ui執行緒會不斷更新ui控制項,例如重畫,切換狀態,這時如果其它執行緒操作這個控制項就會引起衝突與爭用。

為了確保多執行緒元件的執行緒安全,必須協調對共享資源的訪問。 如果多個執行緒嘗試同時訪問某一共享資源,則可能出現爭用狀態,從而導致資料損壞或無效。 您可以使用鎖來避免出現爭用狀態,雖然使用鎖可以保證多個執行緒不會同時訪問乙個物件,但是它們可能會導致明顯的效能降低。

假設正在執行乙個包含多個不同執行緒的程式。 如果每個執行緒都需要使用乙個特定的物件並且必須等待到獲得該物件的專用鎖後才能執行,則這些執行緒都將停止執行,乙個排在另乙個的後面,從而導致效能降低。

iOS 上不建議在非主線程進行UI操作,在 UIScrollView 生成大量內容的時候,流暢度會由於大量 UI 操作占用主線程而變慢。 UIWebView 在載入時會根據使用者的操作而停止 UI

這裡的 在UIScrollView生成大量內容的時候 我不太明白具體是指什麼,也就是內容是如何生成的?可以通過類似與paging 等待 activityIndicator 的方式來減少scroll view的滑動頻率,在等待時集中生成內容。另外,如果你的效能下降是由於CoreGraphic在draw...

如何評價人人喊弱的劍魔在洲際賽裡成為了非ban必選?

pain 個人覺得,老版的劍魔相對來說更簡單,進場也好,切後排也好,相對來講很容易,開完大之後增加攻擊距離,不容易被風箏。新版的劍魔,控制足,但是很笨重,對於我們普通玩家來講,沒有了以前那種攻速起來之後的收割快感。而對於職業選手來講又不一樣,他們要的不是遊戲的樂趣,而是贏,劍魔的控制很多,很容易打散...

在課程設計不甚合理的非重點大學裡,有必要放棄高績點 追求提公升內在能力嗎?

我和題主的情況一樣,甚至我比你情況更惡劣。非985211普通一本大三在讀。高考嚴重失利,家裡人從此開始幾盡嘲諷謾罵,我當時也是不爭氣就自暴自棄放飛自我了,一直到大二才想起來學習,雖然最終在績點上證明了自己的實力但失去了寶貴的轉到本校王牌專業的機會 就業比肩上流985,但只有這乙個專業,現在想想真的很...