爲什麼所有UIKit繪圖或AppKit繪圖都是在主線程上完成的嗎?爲什麼在主線程上繪製UI?
2
A
回答
2
「因爲多線程繪圖迅速變得太複雜/ conf使用「只是答案的一半。
多線程用戶界面管理的另一個主要障礙是事件處理。將事件處理混合爲併發繪圖,具體而言。您必須以某種方式混合繪圖和猴子在屏幕/鍵盤/鼠標上的混亂,同時有效地維護事務完整性的概念。
已經沒有併發性了。
5
這是在單個線程來完成所有的GUI圖形的主圖案, 訪問屏幕用於添加元素和附圖不是一個多線程進程
想象這樣你有10個線程,每個線程的情況下他們試圖繪製和或移動屏幕上的元素,這將創造聯合國確定的錯誤和問題,這將是非常難以處理和/或找到
+1
+1:簡單的答案,擊中當場。你實際上可以從幾個線程管理UI,但事情很容易失控。 –
+0
你可以用多線程方式實現GUI繪圖,但是我希望當你添加鎖定來阻止兩個線程試圖同時在相同的地方或不同的東西同時繪製同一個東西時,你將會以增加鎖定開銷和令人討厭的不確定錯誤爲代價而失去所有優勢。 – JeremyP
相關問題
- 1. 爲什麼android UI在主線程上運行?
- 2. 爲什麼在主線程上運行?
- 3. 爲什麼當我在UI線程上運行它時,必須在主UI線程上調用'setAdListener'
- 4. 爲什麼主線程的Looper.loop()不會阻塞UI線程?
- 5. 在UI線程上運行什麼?
- 6. 什麼時候應該讓SurfaceView通過UI線程繪製?
- 7. 爲什麼要在主UI線程中調用PictureDecoder.DecodeJpeg()?
- 8. onLocationChanged回調是在什麼線程上進行的?主UI線程?
- 9. 在UI線程中繪製CALayer.contents?
- 10. 爲什麼單線程模型用於將UI更新爲主線程?
- 11. 什麼不在主線程上運行?
- 12. 爲什麼iOS中的UI相關任務必須在主線程上執行?
- 13. 爲什麼在主線程中?這裏
- 14. 爲什麼我無法在JFrame上繪製線條
- 15. 爲什麼matplotlib fill_between僅在PDF上繪製邊緣線?
- 16. 爲什麼CursorAdapter(使用ContentProvider)在UI線程上加載數據?
- 17. 爲什麼在UI線程上實現android mediaPlayer回調?
- 18. 爲什麼Android服務需要在UI線程上運行?
- 19. Android:SurfaceView,爲什麼在不同的線程上繪圖
- 20. 爲什麼Task.Factory.FromAsync阻塞UI線程?
- 21. 爲什麼線程池工作項目在UI線程上執行?
- 22. 在android中,爲什麼UI不能從UI線程更新?
- 23. 爲什麼CompletableFuture的thenAccept()未在主線程上運行
- 24. 爲什麼UIWebView的AVPlayerViewController不能在主線程上運行?
- 25. 爲什麼ImageView.StartAnimating不會在主線程上動畫
- 26. 爲什麼主線程會等待
- 27. 爲什麼Handler.Post阻塞主線程
- 28. 爲什麼從主線程調用槽?
- 29. 帶GL_LINES的glDrawElements強制gleRunVertexSubmitARM? (或:爲什麼繪製線框在iOS上很慢?)
- 30. iOS線程和在主線程上進行UI更改
可能的重複[爲什麼大多數UI框架單線程?](http://stackoverflow.com/questions/5544447/why-are-most-ui-frameworks-single-threaded) –