線程的實際用途
回答
要掃描目錄,尋找已更改的文件。爲每個子目錄產生一個線程然後在一個線程中執行它會更快。
最常見的用途是resposive用戶界面,如顯示長時間運行的後臺任務的進度條。
線程對於大多數UI工作來說至關重要。否則,任何時候你想要做一個計算或任何需要一段時間,你會凍結用戶界面。因此,大多數GUI框架都具有處理事件循環(和一些繪圖活動)的UI線程,但大多數用戶代碼都發生在另一個線程中。
線程還可用於偶爾檢查事件或對系統狀態進行偶發性更改。
後臺任務:
- 處理網絡連接和協議。
- 在多媒體應用程序的後臺運行聲音合成。
- 在多媒體應用(CD流)後臺做文件加載
其他用途:
- 在兩個不同的線程運行相同代碼的兩個實例加速某些算法。
我們一直在爲主要屏幕由適合當前登錄用戶的工作流組成的多個應用程序使用線程。
獲取工作流可能需要大量時間。工作流程的各個部分都由不同的線程加載。對於我們的主應用程序BP/GeNA,大約有11個線程被觸發,每個線程運行一個數據庫查詢。
問候,
利芬
處理在服務器併發客戶端請求。
我最常使用線程,當我想用一堆資源來做某些事情時,我知道這些資源需要很長時間,當處理元素的工作之間沒有相互依賴關係時,並且特別是如果瓶頸不是本地資源(如磁盤的CPU)。例如,如果我有一堆要檢索的URL,那麼每個URL都會進入單獨的線程。
(不那麼認真的答案)我喜歡在任何情況下使用線程,我希望系統以有趣和不明顯的方式落在它的屁股上,同時仍然有可能的不可否認性,以至於我可以讓問題溜走。或者,用Rasmus Lerdorf的話來說,「人們不夠智能寫出線程安全的代碼」。
我知道大部分時間我使用線程,我真正想做的是啓動一些異步工作 - 即我想在神話的「背景」中發生某些事情。不幸的是,思考線程並不是真正的「做一些工作」的正確抽象層次,因爲你並沒有在背景中加入某些東西。使用線程API,您可以創建另一個位置,以將流程作爲流程原始線程的兄弟運行,並且需要擔心他們之間共享的信息以及如何等等。這就是爲什麼我喜歡更新的API,如Cocoa的NSOperation
和NSOperationQueue
。對於那個API來說,啓動一些工作只是某一行,而庫管理是應該啓動一個新線程還是舊一個線程被重用。
這是一個非常普遍的問題。我使用「線程」來阻止UI線程的阻塞工作,無論該工作是本地還是網絡I/O,還是工作都是計算密集型任務,這些任務會根據運行的硬件而「封鎖」 。
我覺得更有趣的問題關於特定問題或模式,幫助緩解它和線程的適用性,即:
- 如何線程相關 視圖控制器模型?
- 如何或爲什麼我應該將 從UI線程中解僱到 確保UI甚至不會認爲 的阻塞?
- 線程池如何能被 用於遞歸(網絡) 目錄遍歷作爲其他人 暗指?
- 我應該affinitizing 線程的 計算密集型任務,或 我應該使用線程池和 讓OS搶先調度 線程,因爲它認爲合適的協調調度。
這是一個相當廣闊的空間,更清晰可能會有所幫助。
線程是大多數I/O綁定應用程序以及任何合理複雜的服務器端應用程序的基礎。考慮一個應用程序,它充當多個數據源的信息交換。您需要能夠以獨立線程處理此信息,特別是如果對此數據的操作受到延遲的影響或需要大量時間才能完成。
在大多數情況下,線程通常有助於解耦應用程序中的各種問題。單個線程向相關方派發事件在絕大多數情況下都不會很好地擴展。
除了最簡單的應用程序之外的所有應用程序都需要一定程度的線程化。
我構建Web應用程序,所以我編寫的所有代碼都在多個線程中執行。
我們的應用程序是一個Web服務,所以我們爲每個請求產生一個線程。從技術上講,JNI衍生出線程,但代碼無論如何都必須是線程安全的。我們在Hibernate和基於ESB的基礎架構上遇到了一些有趣的(FSVO)問題,但大部分時間保持在ThreadLocals中並且在子系統入口點上同步已經非常成功。我們還沒有嘗試過幾十項同時發生的請求,所以可能還有一些我們尚未確定的競爭條件,但總體來說我們表現得很好,並給出了正確的答案。
我寫的滋生時響起(從揚聲器)定期提醒的東西需要注意的測試操作線程的功能。模態對話框響應後,該線程被終止。
不僱傭關係,但我做的Netflix Prize一些方面的工作。我的電腦有8個內核和20 GB的內存......只運行1個線程將是一件非常浪費的事情,所以我通常會啓動16個線程左右。
- 1. jQuery.get() - 實際用途?
- 2. TypedReference的實際用途
- 3. 遞歸的實際用途
- 4. 對象序列化的實際用途?
- 5. toContain()的實際用途是什麼?
- 6. Seralization隔離級別的實際用途?
- 7. 什麼是System.Transactions的實際用途?
- 8. Socket.ExclusiveAddressUse的實際用途是什麼?
- 9. mem_fn&bind的一些實際用途
- 10. Android NDK的實際用途是什麼?
- 11. array_diff_uassoc的實際用途是什麼?
- 12. jQuery的實際用途是什麼?
- 13. 臨時文件的實際用途
- 14. 「volatile restrict」指針有實際用途嗎?
- 15. JUnit測試用例中「失敗」的實際用途是什麼?
- 16. Java中實際停止()線程的線程池?
- 17. 在線程池中創建實際的線程
- 18. 什麼是守護進程?他們的實際用途?用法與PHP?
- 19. 什麼是PHP的睡眠()的實際用途?
- 20. ES5提供的新方法的實際用途是什麼?
- 21. Node實際創建多少個線程?
- 22. 任何人都可以想到XMLGregorianCalendar.getEon()的實際用途嗎?
- 23. Observable.never()函數的實際用途是什麼?
- 24. <sparkle:ReleaseNotesLink>的實際用途是什麼?
- 25. 雙向覆蓋「bdo」的實際用途是什麼?
- 26. Lua在Mac OS X中的一些實際用途是什麼?
- 27. .PDB文件的實際用途是什麼?
- 28. `git fetch`命令的實際用途/目標是什麼
- 29. 什麼是stream_wrapper_register在php中的實際用途?
- 30. 受保護構造函數的實際用途是什麼?
這不是很具體。有真正的問題嗎?我認爲我們大多數人都使用線程來完成數百個任務。你可能會問我們用了什麼「if語句」。 – jalf 2009-02-22 01:03:36
給我一點點家庭氣氛。 – womble 2009-02-22 01:07:29
哈哈,你好,聽起來有點家常。 – 2009-02-22 01:23:46