並行與併發

2021-08-17 21:39:27 字數 781 閱讀 4735

今天看見了乙個很有意思的回答:)

你吃飯吃到一半,**來了,你一直到吃完了以後才去接,這就說明你不支援併發也不支援並行。你吃飯吃到一半,**來了,你停了下來接了**,接完後繼續吃飯,這說明你支援併發。你吃飯吃到一半,**來了,你一邊打**一邊吃飯,這說明你支援並行。併發的關鍵是你有處理多個任務的能力,不一定要同時。並行的關鍵是你有同時處理多個任務的能力。所以我認為它們最關鍵的點就是:是否是『同時』

併發(concurrency)指的是程式的結構,並行(parallelism)指的是程式執行時的狀態

要理解「併發」這個概念,必須得清楚,併發指的是程式的「結構」。當我們說這個程式是併發的,實際上,這句話應當表述成「這個程式採用了支援併發的設計」。好,既然併發指的是人為設計的結構,那麼怎樣的程式結構才叫做支援併發的設計?

這個概念很好理解。所謂並行,就是同時執行的意思,無需過度解讀。判斷程式是否處於並行的狀態,就看同一時刻是否有超過乙個「工作單位」在執行就好了。所以,單執行緒永遠無法達到並行狀態。

要達到並行狀態,最簡單的就是利用多執行緒和多程序。但是 python 的多執行緒由於存在著名的 gil(全域性直譯器鎖),無法讓兩個線**正「同時執行」,所以實際上是無法到達並行狀態的。

併發是兩個佇列交替使用一台咖啡機,並行是兩個佇列同時使用兩台咖啡機,如果序列,乙個佇列使用一台咖啡機,那麼哪怕前面那個人便秘了去廁所呆半天,後面的人也只能死等著他回來才能去接咖啡,這效率無疑是最低的。

併發與並行

做併發程式設計之前,必須首先理解什麼是併發,什麼是並行,什麼是併發程式設計,什麼是並行程式設計。併發 concurrency 和並行 parallellism 是 解釋一 並行是指兩個或者多個事件在同一時刻發生 而併發是指兩個或多個事件在同一時間間隔發生。解釋二 並行是在不同實體上的多個事件,併發是...

併發與並行

併發性 concurrence 指兩個或兩個以上的事件或活動在同一時間間隔內發生。併發的實質是乙個物理cpu 也可以多個物理cpu 在若干道程式之間多路復用,併發性是對有限物理資源強制行使多使用者共享以提高效率。並行性 parallelism 指兩個或兩個以上事件或活動在同一時刻發生。在多道程式環境...

並行與併發

所有的併發處理都有排隊等候,喚醒,執行至少三個這樣的步驟.所以併發肯定是巨集觀概念,在微觀上他們都是序列被處理的,只不過資源不會在某乙個上被阻塞 一般是通過時間片輪轉 所以在巨集觀上看多個幾乎同時到達的請求同時在被處理。如果是同一時刻到達的請求也會根據優先順序的不同,而先後進入佇列排隊等候執行。併發...