2013-12-16 16 views
2

簡單地說,在哪個用例中,最好有許多進程從隊列中獲取msg,並按順序完成針對該作業的許多任務,或者讓許多任務/進程從隊列中獲得1 msg並完成針對它的任務。並行/並行處理的標準做法?

我有一個工作進入隊列。清潔我的衣服。

我能做的....

 [option A] 
     Clean My Laundry -----> Wash it 
           then, Store Transaction 
           then, Tell ppl i'm washing 
           then, write a blog about it 

     OR 

    [option B] 
    Clean My Laundry ------> Wash it 
         ------> Store Transaction 
         ------> Tell ppl i'm washing 
         ------> write a blog about it 

的任務的順序是無關緊要的。他們都需要完成。我明白他們是否相互依賴,將他們分組。

分組或不分組分發流程的優點或缺點是什麼?

謝謝你的任何貢獻。

+0

你在尋找什麼樣的優勢或劣勢?通常,併發性是出於性能或響應性原因而完成的。 – bheklilr

+0

我只想知道爲什麼要選擇一個vs選項b? – sirvon

回答

3

您的示例顯示了並行性而非併發性:並行性將一項任務分解爲子任務並同時執行子任務;併發性是同時發生的許多不同的事情。

正如你所說,當你的主要任務可以分解爲彼此獨立的子任務時,並行處理是一個好主意。優點是主要任務只需要最長的子任務。

Simon Marlow最近出版的有關Haskell並行處理的書是一本很好的(透徹的,非常可讀的)介紹。