2009-08-01 122 views
3

「並行軟件」的含義是什麼,「並行軟件」和「普通軟件」有什麼區別?並行軟件?

它有什麼優點和缺點?

編寫「並行軟件」是否需要特定的硬件或編程語言?

回答

0

http://en.wikipedia.org/wiki/Thread_(computer_science)

在計算機科學,從一個 計算機程序的叉 執行結果爲兩個或更多 同時運行任務的線程。 執行線程和 進程不同於運行 系統到另一個進程,但在大多數情況下, 線程包含在 進程中。 多個線程可以在同一進程內共享 資源和內存等,而 不同進程不共享這些資源。

大多數現代編程語言都以各種方式支持多線程(甚至是最新版本的Javascript)。 :-)

優點和缺點可以取決於任務。如果你需要做很多處理,那麼多線程可以幫助你把它分解成更小的工作單元,每個CPU可以同時獨立工作。但是,多線程代碼的編寫和維護通常比單線程代碼更復雜。

您仍然可以在只有一個處理器的機器上編寫/運行多線程代碼。儘管只有一個處理器來執行這些任務,但操作系統將通過快速切換上下文並一次爲每個線程執行一些指令來確保它們同時發生。

您可能熟悉的並行任務的一些專用硬件是可在大多數新計算機上找到的GPU。在這段視頻中,流言終結者展示出一種單線程CPU上繪製之間的差異,以及多線程GPU:
http://www.youtube.com/watch?v=XtGf0HaW7x4&feature=player_embedded

+0

並行性!=併發性。當使用併發時,單核上的性能不會有任何提高(併發可能包括並行性,但並不總是) – Wes 2012-03-18 20:39:50

0

並行軟件可以本機利用計算機上的多個內核/ cpus或有時跨多臺計算機。例子包括圖形渲染軟件和電路設計軟件。

對於多處理器感知軟件以外的其他缺點並不確定是否會導致CPU浪費。

2

是「並行軟件」需要一個特定的硬件或編程語言?

是和是。

第一個很簡單。大多數現代CPU(比m6800更新)具有硬件功能,可以一次執行多個任務,但不一定同時執行兩個任務。例如,當定時器中斷關閉時,CPU可以保存它正在做的事情,然後開始做其他事情。這些任務同時運行。即使沒有這些,你也可以讓兩臺機器之間進行某種連接(比如通過一個空調制解調器適配器進行簡單的串行連接),並且它們都可以並行工作在同一個任務上。

大多數新型CPU(不僅僅是現代但最新)的CPU都具有內置的並行計算資源。這些多核CPU實際上可以同時處理兩個或多個任務,每個核心有一個任務,並且具有特殊功能使這些任務合作更有效率。

第二個需要特殊的軟件工具,如並行語言,在某些方面是並行計算最難的部分。如果您是廚房中唯一的人,那麼從一開始到下一個接一個的烹飪方法,直到所有的菜都煮熟爲止,做飯時很容易。如果你想通過增加更多的廚師來加快速度,你必須小心一點,不要踩在彼此的腳趾上。

處理這種最簡單的方法是使用一個線程庫,它提供了一些工具,以便多個任務可以安排不會互相打開。這並不像標記程序那麼簡單,系統負責處理其餘部分,相反,您必須編寫每個任務,以便在每個可能會干擾其他任務的地方與任何其他任務進行通信。