並行和併發理解起來好像一樣,好像又不一樣,到底怎麼理解呢?兩者又有什麼區別呢?
先上個人理解的結論:
併發的關鍵:是你有處理多個任務的能力,不一定要同時。
並行的關鍵:是你有同時處理多個任務的能力。
具體分析如下:
併發程式:
如果程式支援多個動作同時存在,那麼就是併發程式。
並行程式:
如果程式支援多個動作同時執行,那麼就是並行程式。
併發執行:
如果併發程式在單核cpu上執行,那麼多個執行緒將交替的執行(上下文切換),也就是說多個執行緒同時存在,但同一時刻只有乙個執行緒執行,這個場景就是併發執行;
並行執行:
如果併發程式在多核cpu上執行,那麼多個執行緒同時執行在不同的cpu上,這個場景就是並行執行。
由上可得出結論:並行
是併發
的乙個子集,同時現在的併發程式往往也是並行程式。
並行和併發的區別理解
erlang 之父 joe armstrong 用一張5歲小孩都能看懂的 釋了併發與並行的區別 併發是兩個佇列交替使用一台咖啡機,並行是兩個佇列同時使用兩台咖啡機,如果序列,乙個佇列使用一台咖啡機,那麼哪怕前面那個人便秘了去廁所呆半天,後面的人也只能死等著他回來才能去接咖啡,這效率無疑是最低的。併發...
並行與併發的理解
並行 就是同一時間點,同時執行兩件或者多件事,比如,a,b操作員分別同時操作他們自己的賬戶 併發 指同時 或著說在同一段時間內 內,執行同乙個事件,比如 銀行兩操作員同時操作同一賬戶就是典型的例子。比如a b操作員同時讀取一餘額為1000元的賬戶,a操作員為該賬戶增加100元,b操作員同時為該賬戶減...
併發和並行
併發和並行的區別 乙個處理器同時處理多個任務和多個處理器或者是多核的處理器同時處理多個不同的任務。併發和並行的區別就是乙個處理器同時處理多個任務和多個處理器或者是多核的處理器同時處理多個不同的任務。前者是邏輯上的同時發生 simultaneous 而後者是物理上的同時發生 併發性 concurren...