2009-08-21 216 views

回答

17

Multithreading作爲廣泛的編程和執行模型允許多個線程的單個進程的上下文中存在。這些線程共享進程的資源,但能夠獨立執行。線程化編程模型爲開發人員提供了一個有用的併發執行抽象。然而,也許這項技術最有趣的應用是將其應用於單個進程以實現多處理器系統的並行執行。

這意味着,單個process可以有許多不同的「函數」 executingconcurrently,允許應用程序可以更好地使用可用的硬件(多個核心/處理器)。線程可以在它們之間進行通信(它們具有shared memory),但它的一個hard problem accesing共享對象/存儲器時具有每個線程behave wellothers

線程允許應用程序保持響應,而無需使用捕獲所有的應用程序循環,做長時間的操作時的感覺。

例如,非螺紋copy程序不會讓你直到複製完成做任何事情。

線程有助於解決複雜的,長期的,獨立的問題,但帶來了a lot more complexity,這使得即使是經驗豐富的開發人員也很難。

1

這是一個內部使用多個thread來實現其目標的應用程序。

有很多例子,因爲大多數需要與用戶交互的應用程序都有一個UI線程和一組工作線程。這樣做是爲了讓UI在應用程序忙於執行某項任務時保持響應。

+4

進程!=線程 – ripper234 2009-08-21 16:56:17

1

一個多線程的應用程序需要同時運行多個任務,以加快速度的優勢。多線程還可以利用多個CPU機器。

2

這是一個可以同時完成多項任務的應用程序。例如,如果您在Word中綁定文檔,則會有一個響應鍵盤的線程,有一個線程正在檢查您的拼寫,還有一個正在檢查語法,還有一個線程可以保存文檔的備份以防萬一程序崩潰。

0

這是一個程序,使用多個thread。不同的線程可以訪問共享內存結構(通常使用合適的synchronization mechanisms,例如locks)。一個例子是一個程序,它可以同時下載幾個文件,每個下載都使用不同的線程來加速下載過程(有更復雜的方法來實現這一點,這只是一個例子)。

多線程通常是使用所有核心的現代計算機上使用CPU密集型任務,即利益(例如試圖打破使用多個處理器的CYPHER)。

一個線程和處理之間的區別在於不同的方法通常不能直接共享存儲器和數據結構,雖然之間存在着處理的各種機制,以共享信息(它們通常比線程之間共享信息更昂貴)。

0

他說

線程和進程的實施,從一個操作系統到另一個不同,但在大多數情況下,一個線程包含在進程內。多個線程可以存在於同一個進程內並共享資源(如內存),而不同的進程不共享這些資源。

-1

對於線程你必須知道進程是什麼,但程序的實例以Windows中的繪圖爲例,當你運行它時,它會創建一個繪圖程序實例或進程。 當你在不同窗口打開多個圖像時,你需要對該程序進行多重處理。 同樣,線程是進程的一個單位,意思是你看到一個畫圖窗口,但是在背景中有多個線程,例如,color,brush,pencil等。線程有減少處理器的工作量