回答

6

你提到的編程關鍵字是指發明了具體的原因,解決計算和加工領域問題的技術。

什麼每種技術的目的一個簡明的本質來解決:

  • 併發:有許多任務在手,我需要在他們每個人的堅定的進步,而不是完成一個並移到在串行方法中的下一個。讓我在每個進程上工作使在給定的時間點,有非零進度兩個或多個任務。 (不一定同時發生

  • 並行:有一個在給我的設備資源單位時間內做更多的工作潛力。讓我用一些技術增加吞吐量可能犧牲延時,讓我的任務(一個或多個)完成更快。

  • 多線程我的兩個設備的硬件和軟件有在程序執行多個線程的支持;讓我分裂計算密集型計算跨越這些處理器/核心/線程池!

  • 異步:一組要完成的任務。 我正在執行其中一個目前。讓我打電話給我的朋友幫我出了一個任務,我希望他/她還是回到給我的結果而我繼續執行我的任務。

注意,以上討論的技術並不一定是相互排斥 。 具體而言,多線程是一種並行性,反過來確實會導致併發度超過1(非平凡的多線程)。

順便說一句,我一直保持着對並行計算的博客。在其中一篇文章中,我寫了關於在同一領域使用的行話。

http://magical-parallel-computing.blogspot.in/2017/04/parallel-computing-jargon.html

我希望它能幫助你在概念層面。

+0

回覆,「併發」:除了很好的解釋,這聽起來像你說的,你可以衡量進展情況「在給定的時間點。」我想知道你想說的是在一個給定的時間點可以完成兩個或更多的任務。,那些任務_overlap_)。 –

+1

你說多線程意味着「......多於一個執行線程」;好的,但什麼是「執行線程?」如果您最近沒有嘗試向新手解釋它,那麼您可能不記得有些人可能難以想出這個想法。如果noob知道「執行上下文」和「調用棧」是什麼意思,你可以解釋實現。而且,在更高層次上,可以討論多線程作爲組織執行併發任務和/或處理異步事件的程序的一種方式。 –

+0

@james大謝謝!哦,同樣,我已經提到,任務並不一定是同時發生的,所以它們不需要重疊,例如在共同例程的情況下。如果它們在時間上重疊,那麼它不僅僅是併發性,它也是並行性的;因爲重疊執行需要多個處理單元/工作者。 – varun