我構建了一個應用程序,它可以在不着色的情況下對來自位圖的像素進行重新着色,而只需逐個像素的CPU進行着色。這對我來說足夠快,但我想知道CPU是否默認使用了多線程,而沒有在編程中實際使用它?默認情況下是Android多線程而不使用它?
回答
默認情況下,應用程序啓動運行的線程(稱爲 「主」)。此線程非常重要,因爲它負責將事件分派到相應的用戶界面小部件 (包括繪圖事件)。它也是您的應用程序與來自Android UI工具包 (來自android.widget和android.view包的組件)交互組件的線程。如 這樣,主線程有時也被稱爲UI線程。
和螺紋的關係,以CPU爲(多線程例子):
多線程程序的這種優勢使得它在具有多個或多計算機系統快 操作因爲程序的線程自然會藉助 來真正實現併發執行。在這種情況下,程序員必須小心避免競態條件和其他非直觀行爲。爲了使數據正確地被操作,線程通常需要及時會合以便 以正確的順序處理數據。爲了防止在修改過程中同時修改公共數據或 ,中的線程還可能需要 互斥操作(通常使用信號量實現)。大意使用這樣的原語可能會導致死鎖。
多線程的另一種用途,即使對單CPU系統也適用, 是應用程序對輸入保持響應的能力。在 單線程程序中,如果主執行線程阻塞了長時間運行的任務,整個應用程序可能會凍結。通過 將此類長時間運行的任務移動到與主執行線程同時運行 的工作者線程,可能使 應用程序在後臺執行任務 時仍對用戶輸入做出響應。另一方面,在大多數情況下,多線程並不是保持程序響應的唯一方式,使用非阻塞I/O 和/或Unix信號可用於獲得類似結果。
長話短說。不,你的程序不會是多線程的,除非你明確告訴它。而在Android的情況下,AsyncTask將是與UIThread(main)交互時要走的路線。
謝謝,這就是我一直在尋找的東西。 – csnewb
沒問題:) @csnewb –
- 1. 產量和默認情況||不輸出默認情況下
- 2. 默認情況下,使qmake使用qt5
- 3. 默認情況下,TensorFlow作業是否使用多個核心?
- 4. 默認情況下系統PIP而不是virtualenv PIP?
- 5. 表僅在交互時顯示,而不是默認情況下
- 6. 默認情況下是GLfloat還是GLdouble?
- 7. 如何使Octave在默認情況下使用「gnuplot」而不是「fltk」?
- 8. 默認情況下scala並行集合有多少個線程使用?
- 9. Switch語句。使用默認情況下
- 10. 默認情況下,JMS使用HTTP?
- 11. 默認情況下顯示android SearchView EditText
- 12. 默認情況下,在Zend Framework URL中使用破折號( - )而不是加號(+)
- 13. Rails&Nginx - 默認情況下如何讓$ rails s使用Nginx而不是WEBrick?或
- 14. 默認情況下如何讓vim使用緩衝區而不是stdout?
- 15. 在什麼情況下應該使用AUTOINCREMENT而不是默認的ROW ID?
- 16. 安卓:默認情況下
- 17. 默認情況下,法國
- 18. 默認情況下,Constexpr lambda?
- 19. 默認情況下在VBox
- 20. 在默認情況下
- 21. FactoryGirl在默認情況下
- 22. ,async:默認情況下是否爲假?
- 23. ,默認情況下是安全的?
- 24. 默認情況下python-excel不匹配
- 25. 默認情況下不會執行C++
- 26. DeltaImport默認情況下不會發生
- 27. 引導3.0.2默認情況下不
- 28. PHP - 捲曲默認情況下不
- 29. 默認情況下使靜態數據線程安全是什麼意思?
- 30. 默認情況下發送BASIC認證,而不是等待HTTP 401
你能提供你的代碼嗎? :) –
哦,我只是問自己,如果可能的話,不是爲了解決任何問題。該代碼是一個非常具體的實現。你想要自己的代碼? – csnewb
哦,不,但謝謝你! :P我只是好奇,如果你正在調用自己創建線程的任何對象。 :D –