并发(Concurrency)和并行(Parallelism)
并發和并行是兩個非常容易被混淆的概念,它們都可以表示兩個或者多個任務一起執行,但是偏重點有些不同。并發偏于多個任務交替執行,而多個任務之間有可能還是串行的。而并行的真正意義上的“同時執行”。
嚴格意義上來說,并行的多個任務是真實的同時執行,而對于并發來說,這個過程只是交替的,一會兒運行A一會兒運行B,系統會不停地在兩者間切換。但對于外部觀察者來說,及時多個任務之間是串行并發的,也會造成多任務間是并行的錯覺。
這兩種情況在生活中都很常見。我曾經去黃山旅游過兩次。黃山風景奇特,有著“五岳歸來不看山,黃山歸來不看岳”的美稱。只要去過黃山的人都應該知道,導游時常掛在嘴邊的“走路不看景,看景不走路”。因為黃山頂上經常下雨,地面濕滑,地形險峻。如果邊走邊看,跌倒擦傷那是常有的事,安全起見,就要求旅游在看景的時候,能夠停下腳步,走路的時候能夠專心看著地面,管好雙腿。這是“并發”,它和“邊走邊看”有著非常奇妙的關系,因為這兩種情況,都可以被認為是“同時在看景和走路”。
那么在黃山上真正的“并行”應該是什么樣子呢?聰明的同學應該可以想到,那就是坐纜車上山。纜車可以代替不行,你坐纜車才能專心欣賞沿途的風景,“走路”這些事情全部交給纜車去完成就好。
實際上,如果系統內只有一個CPU,而使用多進程或者多線程任務,那么真實環境中這些任務不可鞥是真實并行的,畢竟一個CPU一次只能執行一條指令,這種情況下多進程或者多線程就是并發的,而不是并行的,真實的并行也只可能出現在擁有多個CPU的系統中。
轉載于:https://www.cnblogs.com/loogr/p/7129231.html
總結
以上是生活随笔為你收集整理的并发(Concurrency)和并行(Parallelism)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt5.9使用QWebEngineVie
- 下一篇: HTML知识点梳理