2009-02-22 47 views
3

在您的工作中,您使用線程的具體內容是什麼?線程的實際用途

(請提供該應用程序的說明和線程如何幫助/增強的應用程序。)

+2

這不是很具體。有真正的問題嗎?我認爲我們大多數人都使用線程來完成數百個任務。你可能會問我們用了什麼「if語句」。 – jalf 2009-02-22 01:03:36

+1

給我一點點家庭氣氛。 – womble 2009-02-22 01:07:29

+0

哈哈,你好,聽起來有點家常。 – 2009-02-22 01:23:46

回答

0

要掃描目錄,尋找已更改的文件。爲每個子目錄產生一個線程然後在一個線程中執行它會更快。

1

最常見的用途是resposive用戶界面,如顯示長時間運行的後臺任務的進度條。

4

線程對於大多數UI工作來說至關重要。否則,任何時候你想要做一個計算或任何需要一段時間,你會凍結用戶界面。因此,大多數GUI框架都具有處理事件循環(和一些繪圖活動)的UI線程,但大多數用戶代碼都發生在另一個線程中。

線程還可用於偶爾檢查事件或對系統狀態進行偶發性更改。

1

後臺任務:

  • 處理網絡連接和協議。
  • 在多媒體應用程序的後臺運行聲音合成。
  • 在多媒體應用(CD流)後臺做文件加載

其他用途:

  • 在兩個不同的線程運行相同代碼的兩個實例加速某些算法。
0

我們一直在爲主要屏幕由適合當前登錄用戶的工作流組成的多個應用程序使用線程。

獲取工作流可能需要大量時間。工作流程的各個部分都由不同的線程加載。對於我們的主應用程序BP/GeNA,大約有11個線程被觸發,每個線程運行一個數據庫查詢。

問候,
利芬

2

處理在服務器併發客戶端請求。

0

我最常使用線程,當我想用​​一堆資源來做某些事情時,我知道這些資源需要很長時間,當處理元素的工作之間沒有相互依賴關係時,並且特別是如果瓶頸不是本地資源(如磁盤的CPU)。例如,如果我有一堆要檢索的URL,那麼每個URL都會進入單獨的線程。

4

(不那麼認真的答案)我喜歡在任何情況下使用線程,我希望系統以有趣和不明顯的方式落在它的屁股上,同時仍然有可能的不可否認性,以至於我可以讓問題溜走。或者,用Rasmus Lerdorf的話來說,「人們不夠智能寫出線程安全的代碼」。

1

我知道大部分時間我使用線程,我真正想做的是啓動一些異步工作 - 即我想在神話的「背景」中發生某些事情。不幸的是,思考線程並不是真正的「做一些工作」的正確抽象層次,因爲你並沒有在背景中加入某些東西。使用線程API,您可以創建另一個位置,以將流程作爲流程原始線程的兄弟運行,並且需要擔心他們之間共享的信息以及如何等等。這就是爲什麼我喜歡更新的API,如Cocoa的NSOperationNSOperationQueue。對於那個API來說,啓動一些工作只是某一行,而庫管理是應該啓動一個新線程還是舊一個線程被重用。

0

這是一個非常普遍的問題。我使用「線程」來阻止UI線程的阻塞工作,無論該工作是本地還是網絡I/O,還是工作都是計算密集型任務,這些任務會根據運行的硬件而「封鎖」 。

我覺得更有趣的問題關於特定問題或模式,幫助緩解它和線程的適用性,即:

  • 如何線程相關 視圖控制器模型?
  • 如何或爲什麼我應該將 從UI線程中解僱到 確保UI甚至不會認爲 的阻塞?
  • 線程池如何能被 用於遞歸(網絡) 目錄遍歷作爲其他人 暗指?
  • 我應該affinitizing 線程的 計算密集型任務,或 我應該使用線程池和 讓OS搶先調度 線程,因爲它認爲合適的協調調度。

這是一個相當廣闊的空間,更清晰可能會有所幫助。

2

線程是大多數I/O綁定應用程序以及任何合理複雜的服務器端應用程序的基礎。考慮一個應用程序,它充當多個數據源的信息交換。您需要能夠以獨立線程處理此信息,特別是如果對此數據的操作受到延遲的影響或需要大量時間才能完成。

在大多數情況下,線程通常有助於解耦應用程序中的各種問題。單個線程向相關方派發事件在絕大多數情況下都不會很好地擴展。

除了最簡單的應用程序之外的所有應用程序都需要一定程度的線程化。

0

我構建Web應用程序,所以我編寫的所有代碼都在多個線程中執行。

0

我們的應用程序是一個Web服務,所以我們爲每個請求產生一個線程。從技術上講,JNI衍生出線程,但代碼無論如何都必須是線程安全的。我們在Hibernate和基於ESB的基礎架構上遇到了一些有趣的(FSVO)問題,但大部分時間保持在ThreadLocals中並且在子系統入口點上同步已經非常成功。我們還沒有嘗試過幾十項同時發生的請求,所以可能還有一些我們尚未確定的競爭條件,但總體來說我們表現得很好,並給出了正確的答案。

0

我寫的滋生時響起(從揚聲器)定期提醒的東西需要注意的測試操作線程的功能。模態對話框響應後,該線程被終止。

0

不僱傭關係,但我做的Netflix Prize一些方面的工作。我的電腦有8個內核和20 GB的內存......只運行1個線程將是一件非常浪費的事情,所以我通常會啓動16個線程左右。